在数组javascript中查找特定元素

时间:2015-07-21 17:50:23

标签: javascript arrays coffeescript

我有一个包含n个数组的数组A. n个数组中的每一个都包含两个元素。第一个是id,而第二个是对象。有关更多详细信息,请参阅以下示例:

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

对于给定的id,我想获取关联的对象。例如,对于id = 22,我想获得object2

4 个答案:

答案 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