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

IT技术 javascript json
2021-02-22 21:50:55

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

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

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

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

3个回答

最简单的方法是定义一个带有谓词的 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 });
这个答案已经过时,findArray.prototype现在的一部分
2021-04-17 21:50:55
谢谢,这正是我想要的。
2021-05-05 21:50:55

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

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

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

@EdwardRuchevits 没有内置任何东西,但是如果您使用 jQuery 或 underscore.js 之类的东西,您会发现内置的细节。如果您要求功能方式,我可能会回答类似于 JaredPar。
2021-04-16 21:50:55
@EdwardRuchevits - 现在内置了一些东西
2021-04-23 21:50:55
谢谢,这是非常明显的解决方案。:) 我只是想知道该任务是否有一些 lib 函数。
2021-04-30 21:50:55

从 ES2015 开始,JavaScript 数组有findfindIndex方法,两者都可以轻松地进行 polyfill(有关 polyfill,请参阅 MDN 链接)。

在你的情况下,你会使用find

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

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

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