🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Alexa

Alexa(アレクサ)は、米アマゾンが開発したクラウドベースのAIアシスタント。Amazon EchoやEcho dotに搭載され、話かけると音楽を再生したり、天気予報やスケジュールなど様々な情報を提供します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1214閲覧

文字列を検索してデータを複数取得したい

kazuuuuuuuuuuu

総合スコア5

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Alexa

Alexa(アレクサ)は、米アマゾンが開発したクラウドベースのAIアシスタント。Amazon EchoやEcho dotに搭載され、話かけると音楽を再生したり、天気予報やスケジュールなど様々な情報を提供します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/12/12 08:59

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
<javascriptでコード書いて→alexaスキル開発>
csvファイルの文字列検索をした上で、その単語に対応したデータを別の列から取得して、2つの要素をもとに別の列のデータを回答として出したいです。
↓イメージ

列1列2列3
子供向け1階
子供向けおもちゃ2階
子供向け自転車2階
大人向け3階
大人向けカバン4階

実際はおもちゃが欲しくて2階に行きたくても、
indexOfで”子供向け”の質問をすると”服”のデータしか引っ張って来れない→1階という答えを返してしまう

理想的なのは
ユーザー)子供向けは何階?
alexa)服・おもちゃ・自転車のどれですか?
ユーザー)おもちゃ
alexa)2階です

といった感じです。

発生している問題・エラーメッセージ

indexOfだと最初に一致したデータしか引っ張ってこれません。
matchというのを見つけたのですが、このケースでも使えるのかどうかわかりません。
以下、indexOfを使って書いてみたコードです。
最後のif文の途中で問題に気づいて書きかけになっています。

該当のソースコード

JavaScript

1if (!dep_data) { 2 message = '発音が聞き取れませんでした。もう一度お願いします。'; 3 console.log("発話ミス"); 4 this.emit(':ask', message); 5 } else { 6 for (var r = 2; r < res.length; r++) { 7 if (res[r][1].indexOf(dep_data) > -1 || res[r][3].indexOf(dep_data) >-1 || res[r][8].indexOf(dep_data) >-1) { 8 console.log(dep_data + "あった") 9 if (res[r][1].indexOf(dep_data) > -1) { 10 message = res[r][1] + "は" + res[r][5] + "にあります"; 11 dep = res[r][9]; 12 text = res[r][7] + ", " + res[r][5] + ", " + res[r][1] + ", " + res[r][3]; 13 } 14 15 }

試したこと

条件分岐の列をcsvに作ってみようとして、訳が分からなくなりました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

この質問だといまいち仕様が把握できませんが、Array.prototype.filter() を使えばいいのではないかと思います。

投稿2019/12/12 10:17

2KOH

総合スコア999

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazuuuuuuuuuuu

2019/12/13 04:05

調べてみたら行けそうみたいでした。ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問