我有一個包含n個數組的數組A. n個數組中的每一個都包含兩個元素。第一個是一個id,而第二個是一個對象。有關更多詳細信息,請參閱以下示例:查找數組中的特定元素javascript
A = [ [100, object1], [22, object2], [300, object3]]
對於給定的id,我想獲取關聯的對象。例如,對於id = 22
,我想獲得object2
。
我有一個包含n個數組的數組A. n個數組中的每一個都包含兩個元素。第一個是一個id,而第二個是一個對象。有關更多詳細信息,請參閱以下示例:查找數組中的特定元素javascript
A = [ [100, object1], [22, object2], [300, object3]]
對於給定的id,我想獲取關聯的對象。例如,對於id = 22
,我想獲得object2
。
循環,檢查,並返回
function getById(id) {
for (var i = 0; i < A.length; i++) {
if (A[i][0] == id) {
return A[i][1];
}
}
return false;
}
我目前使用'Coffeescript' –
這是做的一個非常基本的方式。遍歷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
在CoffeeScript中可以使用JS to CF transition
getById = (id) ->
i = 0
while i < A.length
if A[i][0] == id
return A[i][1]
i++
false
一個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涵蓋了所有這些。
在較早的IE瀏覽器中使用for..in時,請注意每個數組都有一個額外的indexOf成員。 – connexo
你可以解釋一下這段代碼:'當e [0] == v'中的e返回e [1]? Thanks –
@connexo:CoffeeScript的'for e in array'與JavaScript的不同,JavaScript的'in'循環將在CoffeeScript中用於'k個對象'。 –
你可以使用underscore.js嗎? – connexo