前提・実現したいこと
下記イメージ画像のように、名前と金額(◯円以上◯円以下)から絞り込みをしたいと思っております。
色々なサイトを参考にさせていただき、下記のコードを考えてみたのですが
実現したい絞り込みができません。
(金額での絞り込みはできますが、名前からの絞り込みができません)
下記コードの間違いをご教授いただければ幸いです。
よろしくお願いいたします。
尚、参考にさせていただいたサイトですが
色々検索しすぎて参照元がわからなくなってしまいました。申し訳ありません。
該当のソースコード
html
1<!-- 名前検索 --> 2<div class="search"> 3 <input type="text" v-model="search"> 4</div> 5<p>{{ search }}</p> 6 7<!-- 金額タグ検索 --> 8<ul> 9 <li v-for="(target, index) in targets" v-bind:key="index"> 10 <input type="checkbox" :id="target" v-bind:value="target" v-model="selectedTargets"> 11 <label :for="target">{{ target }}</label> 12 </li> 13</ul> 14<p>{{ selectedTargets }}</p> 15 16<!-- 検索結果 --> 17<ul> 18 <li v-for="item in itemsList" v-bind:key="item.id"> 19 <p>{{ item.name }}</p> 20 <p>{{ item.price }}</p> 21 </li> 22</ul>
js
1export default{ 2 data(){ 3 return{ 4 items:[ 5 { "id": 1, "name":"あああ", "price":500}, 6 { "id": 2, "name":"いいい", "price":30000}, 7 { "id": 3, "name":"ううう", "price":6000} 8 ], 9 //名前から検索 10 search: '', 11 //金額から検索 12 targets: ['5,000円以下','5,001円~10,000円','10,001円以上'], 13 filtersAsPrice: { 14 '5,000円以下': [0, 5000], '5,001円~10,000円': [5001, 10000], '10,001円以上': [10001, 1000000] 15 }, 16 selectedTargets: [] 17 } 18 }, 19 computed: { 20 itemsList(){ 21 return this.filterByPrice(this.filterByName(this.items)) 22 } 23 }, 24 methods: { 25 filterByName: function() { 26 if(this.search.length > 0){ 27 return this.items.filter(item => !item.name.indexOf(this.search)) 28 } else { 29 return this.items 30 } 31 }, 32 filterByPrice: function(){ 33 return this.items.filter(item => { 34 if(this.selectedTargets.length > 0){ 35 let priceReturn 36 Object.keys(this.filtersAsPrice) 37 .filter(priceRange=> 38 this.selectedTargets.includes(priceRange) 39 ) 40 .filter(priceRangeFiltered => { 41 let low = this.filtersAsPrice[priceRangeFiltered][0] 42 let high = this.filtersAsPrice[priceRangeFiltered][1] 43 if (item.price >= low && item.price <= high) { 44 priceReturn = item 45 } 46 }) 47 return priceReturn 48 } else { 49 return this.items 50 } 51 }) 52 }, 53 } 54} 55
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/30 06:43
2021/05/30 09:09
2021/05/30 09:44