Vue.jsで、ラジオボタンで選択したカテゴリーに該当する人物のリストを表示したいです。
vue.js,html
1<html> 2<body> 3<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.min.js"></script> 4<div class="container" id="people"> 5 <div class="filter"> 6 <label><input type="radio" v-model="selectedCategory" value="0" /> すべて</label> 7 <label><input type="radio" v-model="selectedCategory" value="1" /> スポーツ</label> 8 <label><input type="radio" v-model="selectedCategory" value="2" /> 演劇</label> 9 <label><input type="radio" v-model="selectedCategory" value="3" /> 音楽</label> 10 </div> 11 12 <ul class="people-list"> 13 <li v-for="person in filteredPeople">{{ person.name }}</li> 14 </ul> 15</div> 16 17<script> 18var vm = new Vue({ 19 el: "#people", 20 data: { 21 people: [ 22 { name: "イチロー", category: [1,2] }, 23 { name: "ジロー", category: "1" }, 24 { name: "サブロー", category: "1" }, 25 { name: "シロー", category: "2" }, 26 { name: "ゴロー", category: "2" }, 27 { name: "ロクロー", category: "3" }, 28 ], 29 selectedCategory: "0" 30 }, 31 computed: { 32 filteredPeople: function() { 33 var vm = this; 34 var category = vm.selectedCategory; 35 36 if(category === "0") { 37 return vm.people; 38 } else { 39 return vm.people.filter(function(person) { 40 return person.category === category; 41 }); 42 } 43 } 44 } 45}); 46</script> 47 48</body> 49</html>
<わからないこと>
人物の配列people: []
で、categoryを複数設定{ name: "イチロー", category: [1,2] },
したとき、
〇スポーツ 〇演劇
どちらの押下時にも「イチロー」を表示させたいのですが、できずに困っています。
<やってみたこと>
mapやreduceで二次元配列を一次元配列に戻すことはできるのですが、categoryの数字のみの配列になってしまい、nameの情報も含んだ配列の戻し方がわからず、質問させていただきました。
<補足>
人物の配列people: []
内の書き方が間違っていたら、そちらもご教授いただきたいです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/07 08:01 編集
2022/09/07 08:17 編集
2022/09/07 08:26 編集
2022/09/07 08:35 編集
2022/09/07 08:57
2022/09/07 08:59
2022/09/07 10:59