2017-09-19 12 views
1

でstring.matchを使用することはできません、私は次のような結果を返す必要があります。は、私は次のスクリプトを持っているJS

私は間違って何をしていますか?それを修正する方法もあります(また、.matchを使用しない別の解決方法も問題ありません)。

注:検索値が異なる可能性がありますので、スクリプトは再利用可能である必要があります。

let data = [{ 
 
    text: 'i love apples' 
 
}, { 
 
    text: 'i eat my apple' 
 
}, { 
 
    text: 'no apples on the table' 
 
},{ 
 
    text: 'i love oranges' 
 
}]; 
 
let search = 'apple' 
 

 
let filter = data.filter(item=>{ return item.match(search)}) 
 
console.log(filter)

+2

'item.text.match(search)'のようなものをお探しですか? –

答えて

3

代わりincludesを使用して、あなたの反復でプロパティを参照してください。

let data = [{ 
 
    text: 'i love apples' 
 
}, { 
 
    text: 'i eat my apple' 
 
}, { 
 
    text: 'no apples on the table' 
 
}, { 
 
    text: 'i love oranges' 
 
}]; 
 
let search = 'apple'; 
 

 
let filter = data.filter(item => item.text.includes(search)) 
 
console.log(filter)

+0

うん、あなたは安全に 'return'と中括弧を省略することもできます。 – georg

+0

@georg良い点:)私は彼のスタイルと一貫していたいと思っていました。それを変えてください。 – Rick

1

あなたは、ただそこにあるitem.text.matchを使用しています。 itemはデータ配列のイテレータです。

let data = [{ 
 
    text: 'i love apples' 
 
}, { 
 
    text: 'i eat my apple' 
 
}, { 
 
    text: 'no apples on the table' 
 
},{ 
 
    text: 'i love oranges' 
 
}]; 
 
let search = 'apple' 
 

 
let filter = data.filter(item=>{ return item.text.match(search)}) 
 
console.log(filter)

1

私はあなたが欠けていると感じ唯一の事はitem.textで、試合はstringの代わりobject上の機能である、あなたはコンテンツに合わせて、1つのレベルより深く行きたいです。

let data = [{ 
    text: 'i love apples' 
}, { 
    text: 'i eat my apple' 
}, { 
    text: 'no apples on the table' 
},{ 
    text: 'i love oranges' 
}]; 
let search = 'apple' 

let filter = data.filter((item)=>{ return item.text.match(search)}) 
console.log(filter) 
関連する問題