前提・実現したいこと
アロー関数で書かれたfiliterメソッドのサンプルコードをfunction記法でも理解したいです。
Vue.jsで連想配列を表示、フォームに入力による絞り込みを行っています。
アロー関数で書かれたサンプルコードは正常に動作します。
該当のソースコード
javascript
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Vue.js filter関数</title> 7 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 8 </head> 9 <body> 10 <div id="app"> 11 <h1>一覧</h1> 12 <input type="text" v-model="fruits.name"> 13 <p v-for="item in result">{{item.name}}</p> 14 </div> 15 16 <script> 17 const items = [ 18 { id: 1, name: "リンゴ"}, 19 { id: 2, name: "ミカン"}, 20 { id: 3, name: "ブドウ"}, 21 ] 22 23 new Vue({ 24 el: '#app', 25 data: { 26 fruits: { 27 name: '', 28 }, 29 }, 30 31 computed: { 32 result: function () { 33 let list = items; 34 if (this.fruits.name) { 35 list = list.filter(item => item.name.indexOf(this.fruits.name) > -1); 36 } 37 return list; 38 } 39 }, 40 }); 41 </script> 42 </body> 43</html>
試したこと
list = list.filter(item => item.name.indexOf(this.fruits.name) > -1); if文中の上記のアロー関数を以下functionにしたところエラー。 list = list.filter(function(item) { return item.name.indexOf(this.filter.name) > -1; })
補足情報
Chrome DevToolsエラーは該当行で以下(一応)
Cannot read property 'name' of undefined"
引数、return、this等を何パターンか試してもダメでした。
そういうやり方自体がダメなので、詳しい方に見てもらいたく。
アロー関数だとfilterとindexOfでやっていること自体は分かりやすいですが
functionで試せなくて、モヤモヤしています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/08 16:04