1

说,我有一个简单的对象数组。

var x = [
            {
                id:      1001
                name:    "Jim",
                surname: "Beam"
            },
            {
                id:      1002
                name:    "Jack",
                surname: "Black"
            }
        ]

每个对象都有id,namesurname属性。

如何在数组x中找到id属性等于的对象1002

4

3 回答 3

2

最简单的方法是定义一个带有谓词的 find 函数

function find(arr, predicate) { 
  for (var i = 0; i < arr.length; i++) {
    if (predicate(arr[i]) {
      return arr[i];
    }
  }
  return null;
}

然后你可以在数组上使用这个方法

var found = find(x, function (item) { item.id === 1002 });
于 2013-08-08T16:43:24.883 回答
1

一个简单的循环就足够了:

for(var i=0, len=x.length; i < len; i++){
    if( x[i].id === 1002){
        //do something with x[i]
    }
}

即使您正在处理 json,请记住它只是数组、对象和原语的层次结构。

于 2013-08-08T16:41:31.453 回答
1

从 ES2015 开始,JavaScript 数组具有findfindIndex方法,它们都可以很容易地填充(请参阅那些 MDN 链接以获取 polyfill)。

在您的情况下,您将使用find

var found = x.find(function(entry) { return entry.id == 1002; });

或者还使用其他(不可填充的)ES2015 特性:

const found = x.find(entry => entry.id == 1002);
于 2017-12-16T16:15:12.417 回答