Javascript 如何通过数组的一个属性在数组中找到合适的对象

Javascript 如何通过数组的一个属性在数组中找到合适的对象,javascript,json,Javascript,Json,比如说,我有一个简单的对象数组 var x = [ { id: 1001 name: "Jim", surname: "Beam" }, { id: 1002 name: "Jack", surname:

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

var x = [
            {
                id:      1001
                name:    "Jim",
                surname: "Beam"
            },
            {
                id:      1002
                name:    "Jack",
                surname: "Black"
            }
        ]
每个对象都有
id
名称
姓氏
属性


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

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

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

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

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

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

截至ES2015,JavaScript数组具有和方法,这两种方法都很容易进行多填充(请参阅那些MDN链接了解多填充)

在您的情况下,您可以使用
find

var found = x.find(function(entry) { return entry.id == 1002; });
或者也可以使用其他(不可多边形填充)ES2015功能:

const found = x.find(entry => entry.id == 1002);

谢谢,这正是我想要的。这个答案已经过时,
find
数组的一部分。prototype
现在就可以了。谢谢,这是非常明显的解决方案。:)我只是想知道是否有一些库函数用于该任务。@Edwardruchevit没有内置任何东西,但如果您使用jQuery或underline.js之类的东西,您会发现内置的细节。如果你问起功能性的方法,我可能会回答与贾雷德帕类似的问题。@EdwardRuchevits-现在有了。
const found = x.find(entry => entry.id == 1002);