前提・実現したいこと
JavaScriptのmapメソッドの出力配列を、vue.js の v-for での扱いについて質問させてください。
以下のようなオブジェクトがあり、その中から指定された kind の name だけを v-for で表示させたいとします。例えば、fruitsが指定されたら、
Apple Orange Peach
と表示されるイメージです。
JavaScript
1 foods: [ 2 { kind: 'vegetable', name: ['Tomato', 'Cabbage', 'Onion'] }, 3 { kind: 'fruits', name: ['Apple', 'Orange', 'Peach'] } 4 ] 5
発生している問題・エラーメッセージ
以下のように書くと、[ "Apple", "Orange", "Peach" ] と、配列の中身がそのまま、大括弧やダブルクォーテーションも一緒になって表示されます。中身だけの表示にはどうすればなりますか?
また補足的な質問になりますが、このような場合、v-forのkeyは何を指定したら良いですか?やはりmapにreduceも加えて、idを別途、振った方が良いのでしょうか?
vue
1 <div class="foods" v-for="value in Array.from(whatfood(foods, 'fruits'))" :key="value">{{value}}</div>
JavaScript
1 whatfood (val, targetKind) { 2 const foods = val 3 .map((item) => { 4 if (item.kind === targetKind) { 5 return item.name 6 } 7 }) 8 return foods 9 }
試したこと
reduceで配列を作り直してみましたが、結果は同じでした。
JavaScript
1 whatfood (val, targetKind) { 2 const foods = val 3 .map((item) => { 4 if (item.kind === targetKind) { 5 return item.name 6 } 7 }) 8 .reduce((array, item) => { 9 array.push(item) 10 return (array) 11 }, []) 12 return foods 13 }
補足情報(FW/ツールのバージョンなど)
vue: 2.6.11
vue-cli: 4.4.6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/06 11:45 編集