2017-07-04 7 views
0

JavaScriptを使用して大きな配列を検索する方法が不思議です。JavaScriptを使用して配列内の特定の値を効率的に検索する方法

たとえば、ビジネスを表す要素で構成される配列があるとします。配列には数千の要素がありますが、それらは時には配列を持つオブジェクトです。

これらの各要素には、キーがあります。このカテゴリには、category: ["attr1", "attr2", "attr3"]のようなカテゴリがあります。問題は、配列内の要素の他のキーは、時​​々、「レストラン」に続く名前であるという特性を持っているということです

category: ["Restaurant"] 

:今、私はこのようなカテゴリを持つ配列の要素を見つけたいです他の何かによって「RestaurantPrice」そう

if(array[i].categories != null && 
array[i].categories.indexOf("Restaurant") != -1) { 
    do something 
} 

それは単語「レストラン」のすべての出現箇所を返すでしょうか、私が間違っているため、正常に動作しませんか?

アレイ内の特定のものを検索する方法はありませんか? categoriesもし

+1

'String.indexOf'は部分文字列と一致します。 'Array.indexOf'は、配列内の(全体の)要素にマッチします。あなたはこれをテストしていませんでしたか? –

+0

存在しなかった –

答えて

0

1foobarのは無視されるだろう戻ってくる["foobar", "foo"]

categories.indexOf("foo")のような配列です。

その他の質問はhow to find elements efficient?でした。それが依存

、あなたのセットが静的であれば、あなたのような指標のいくつかの並べ替えを事前に作成してキャッシュすることができます。

var categoriesMap = { 
    foobar: [1, 2, 4], 
    foo: [1, 5, 7] 
} 

配列は、特定のカテゴリが含まれ、アイテムのインデックスを表します。

0

キーが一意の場合は、ハッシュマップを使用してみてください。

関連する問題