2015-07-21 65 views
0

我有一個包含n個數組的數組A. n個數組中的每一個都包含兩個元素。第一個是一個id,而第二個是一個對象。有關更多詳細信息,請參閱以下示例:查找數組中的特定元素javascript

A = [ [100, object1], [22, object2], [300, object3]] 

對於給定的id,我想獲取關聯的對象。例如,對於id = 22,我想獲得object2

+0

你可以使用underscore.js嗎? – connexo

回答

2

循環,檢查,並返回

function getById(id) { 
    for (var i = 0; i < A.length; i++) { 
     if (A[i][0] == id) { 
      return A[i][1]; 
     } 
    } 
    return false; 
} 
+0

我目前使用'Coffeescript' –

1

這是做的一個非常基本的方式。遍歷A,繼續檢查每個數組的第一個成員是否與您的id匹配,並在匹配的情況下返回關聯的對象。

function returnObjectById(id) { 
    for (var i=0; i< A.length; i++) { 
     if (A[i][0]==id) { 
      return A[i][1]; 
     } 
    } 
    return false; // in case id does not exist 
} 

在CoffeeScript的:

returnObjectById = (id) -> 
    i = 0 
    while i < A.length 
    if A[i][0] == id 
     return A[i][1] 
    i++ 
    false 
    # in case id does not exist 
-1

在CoffeeScript中可以使用JS to CF transition

getById = (id) -> 
    i = 0 
    while i < A.length 
    if A[i][0] == id 
     return A[i][1] 
    i++ 
    false 
1

一個CoffeeScript的版本可能會喜歡:

find_in = (a, v) -> 
    return e[1] for e in a when e[0] == v 

,那麼你可以說:

thing = find_in(A, 22) 

如果找不到v,你會得到undefined

for e in a是一個基本的for循環,然後when子句只在其條件爲真時才執行該主體。因此該回路在功能上等同於:

for e in a 
    if e[0] == v 
     return e[1] 

fine manual涵蓋了所有這些。

+0

在較早的IE瀏覽器中使用for..in時,請注意每個數組都有一個額外的indexOf成員。 – connexo

+0

你可以解釋一下這段代碼:'當e [0] == v'中的e返回e [1]? Thanks –

+0

@connexo:CoffeeScript的'for e in array'與JavaScript的不同,JavaScript的'in'循環將在CoffeeScript中用於'k個對象'。 –