を私は私が提供slug
またはtags
のいずれかによって、コレクションを検索することができます関数を記述しようとしている以下のスラグやタグで配列検索 - javascriptの
items: [
{
"slug":"foo",
"tags":[
{"value":"bar"},
{"value":"baz"}
]
},
{
"slug":"bar",
"tags":[]
}
]
のようなJSONオブジェクトを持っています。だから私が "bar"を検索すると、両方のオブジェクトが見つかるはずです。私は「バズ」を検索すると - のみ最初のオブジェクトが返されるなど
これは私がこれまで持っているもの、
items = items.filter((item) => {
var regex = new RegExp(searchTerm, 'g');
if (item.slug.match(regex)){
return true
}
item.tags.map((tag) => {
if (tag.title.match(regex)){
console.log('item found : ',item)
return true
}
})
})
searchTerm
は、提供された検索文字列です。
上記のコードは、slug
試合が、タグが動作するように見えるいけないアイテムを返すように思われます。問題は、内部マップ関数がフィルタ関数にtrueを返さないということですか?
上記を行うための正しい方法は何ですか?私はプレーンjsを使用することをお勧めします。
おかげ
あなたがタグのタイトル属性を持っている例を提供した場合には参考になります。あなたはどんなタイプの検索をしていますか?私は正規表現の代わりにテストを使用します、それは速く、このコードに適しています。 – nick