如何在JavaScript中迭代一组对象?

Rob*_*Rob 1 javascript json object

我正在使用PHP从我的数据库中获取"任务"并将其编码为JSON.当我将数据传输到javascript时,我最终会得到这样的结果:

Array {
   [0] => Task {
      id: 2,
      name: 'Random Task',
      completed: 0
   }
   [1] => Task {
      id: 8,
      name: 'Another task',
      completed: 1
   }
}
Run Code Online (Sandbox Code Playgroud)

等等

我想我真正的问题是,通过id找到任务的最有效方法是什么?迭代数组并检查每个对象似乎可能不是最有效的?有没有其他方法可以做到这一点?

Mat*_*ott 6

关于Javascript对象的事情是它们是必不可少的地图.您可以通过使用点表示法("object.property")和索引表示法("object ["property"])来访问属性.您还可以通过其属性枚举,使用for(i ...)或for (在...)

for (var i = 0; i < arrayObj.length; i++) { ... }

for (var prop in arrayObj) { ... }
Run Code Online (Sandbox Code Playgroud)

我最近一直在做的是为数组对象构建一些Linq-esque扩展:

Array.prototype.Where = function(predicate) {
    Throw.IfArgumentNull(predicate, "predicate");
    Throw.IfNotAFunction(predicate, "predicate");

    var results = new Array();
    for (var i = 0; i < this.length; i++) {
        var item = this[i];
        if (predicate(item))
            results.push(item);
    }

    return results;
};
Run Code Online (Sandbox Code Playgroud)

忽略我的自定义Throw类型,它基本上允许你做类似的事情:

var item = arrayObj.Where(function(i) { return (i.id == 8); }).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

如果你有兴趣,我会在某个时候发表这些内容吗?