我有一个包含n个数组的数组A. n个数组中的每一个都包含两个元素。第一个是id,而第二个是对象。有关更多详细信息,请参阅以下示例:
A = [ [100, object1], [22, object2], [300, object3]]
对于给定的id,我想获取关联的对象。例如,对于id = 22
,我想获得object2
。
答案 0 :(得分:2)
循环,检查并返回
function getById(id) {
for (var i = 0; i < A.length; i++) {
if (A[i][0] == id) {
return A[i][1];
}
}
return false;
}
答案 1 :(得分: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
答案 2 :(得分:1)
CoffeeScript版本可以:
find_in = (a, v) ->
return e[1] for e in a when e[0] == v
然后你可以说:
thing = find_in(A, 22)
如果找不到undefined
,您将获得v
。
for e in a
是一个基本的for循环,然后when
子句只在条件为真时执行主体。所以这个循环在功能上等同于:
for e in a
if e[0] == v
return e[1]
fine manual涵盖了所有这些。
答案 3 :(得分:-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