2017-07-04 56 views
0

我想知道如何使用JavaScript搜索大數組。如何使用JavaScript高效地搜索數組中的特定值

比方說,我們有一個由表示業務的元素組成的數組。數組中有幾千個元素,它們是有時也包含數組的對象。

在這些元件中的每一箇中,所謂的類別看起來像這樣category: ["attr1", "attr2", "attr3"]。現在我只是想找到有這樣一類數組的元素:

category: ["Restaurant"] 

的問題是,在數組中的元素的其它鍵有時也有一個屬性,其中「餐廳」是在名稱後面由別的東西例如「RestaurantPrice」所以

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

會無法正常工作,因爲它會返回詞「餐廳」的所有出現還是我錯了?

如果不是我應該如何搜索數組中的特定事物?

+1

'String.indexOf'匹配子字符串。 'Array.indexOf'匹配數組中的(整個)元素。你甚至沒有測試過這個,是嗎? –

+0

甚至不知道它存在 –

回答

0

如果categories就像["foobar", "foo"]

categories.indexOf("foo")陣列將返回1foobar的將被忽略。其他問題是how to find elements efficient?

這取決於,如果你的設置是靜態的,可以預構建和緩存索引的某種類似:

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

的陣列將代表項目的指標,其中包括給定的類別。

0

如果您的密鑰是唯一的,請嘗試使用HashMaps。