2015-11-03 68 views
0

讓我們有一個樣例數組,像[1,2,3,4,5,6,7,8,9,10,12,0,1,2, 3,4]如何在javascript中不迭代查找數組中的對象的索引

我想在這個數組中找到'0'的第一個匹配項,但沒有迭代。

所有的函數'like','map','grep','filter','some','對每個'每個元素迭代數組中的每個元素以找到相同的。考慮到大數據陣列考慮性能的瓶頸。

我已經嘗試了所有上述方法。 有人對此有任何想法嗎?謝謝你的時間。

+2

沒有做任何搜索操作,你怎麼能搜索?至少使用類似hashtable的東西可能會有所幫助 – rajuGT

+1

你根本無法用數組來實現這一點。甚至原生的'indexOf'也會進行內部迭代。 – Teemu

+0

您可以減少迭代次數,例如。如果數據被排序,但總會發生一些迭代。 –

回答

2

如何找到數組對象的指數不反覆在JavaScript

這是不可能的。如果你有一個通用的值列表,你必須看看每個元素,直到找到你正在尋找的元素。

如果你想要O(1)訪問,那麼你需要使用不同的數據結構。

+0

我想知道bigData系統和分析在巨大列表時如何處理這種情況。它們的性能不會影響每個搜索 – Karthikvenkat86

+0

@ Karthikvenkat86它們可能會將數據分片並使用散列來減少時間。 upvoted,因爲它應該是這個問題的答案。 – fuyushimoya

+0

這樣的數據集可能有多個爲其定義的索引,以允許通過不同的搜索參數進行有效的訪問。想想一個簡單的數據庫表。主鍵始終編入索引以實現高效訪問。索引不過是一個'id - > value'映射。 –

1

如果數組的元素是一個數字或字符串,可以只使用indexOf()

的indexOf()比較searchElement(第一個參數),使用嚴格 平等陣列的元件(用同樣的方法由===或三等於, 運算符)。

var list = [1,2,3,4,5,6,7,8,9,10,12,0, 1, 2, 3,4 ]; 
var firstOccurence = list.indexOf(0); 
+3

indexOf將內部迭代數組元素。 OP詢問哪個不會遍歷數組。 – rajuGT

+0

不索引也迭代數組?按照http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.14 – Sachin

+0

絕對如此。瀏覽器處理的內部迭代和像'map()'或'filter()'等方法提供的回調參數之間存在顯着差異,儘管 – Griffith

相關問題