【问题标题】:Find specific element in array javascript在数组javascript中查找特定元素
【发布时间】:2015-10-11 07:52:01
【问题描述】:

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

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

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

【问题讨论】:

  • 可以使用 underscore.js 吗?

标签: javascript arrays coffeescript


【解决方案1】:

循环、检查和返回

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

【讨论】:

  • 我目前正在使用Coffeescript
【解决方案2】:

这是一种非常基本的方法。遍历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

【讨论】:

    【解决方案3】:

    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 时,请注意每个 Array 都有一个额外的 indexOf 成员。
    • 你能解释一下这行代码:return e[1] for e in a when e[0] == v 吗?谢谢
    • @connexo:CoffeeScript 的 for e in array 与 JavaScript 不同,JavaScript 的 in 循环在 CoffeeScript 中将是 for k of object
    【解决方案4】:

    在 CoffeeScript 中,您可以使用 JS to CF transition

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-31
      • 2020-07-12
      • 2023-01-02
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多