在一个对象数组中搜索对象时,是否有一个函数可以返回 true 或 false?

16 浏览
0 Comments

在一个对象数组中搜索对象时,是否有一个函数可以返回 true 或 false?

我正在寻找一种好的方法来检查对象是否存在于对象数组中。期望的结果是当所有键/值都存在于数组中的同一个对象时返回true。

我通过浏览stackoverflow找到了一些答案,如使用jQuery.grep或在Javascript中查找对象数组中的值的方法。但我想要的是一个布尔结果(而不是找到的对象)。

我知道可以循环遍历所有数组元素,然后比较每个值...等等。

但我的意思是是否有一种方法可以像这样使用JS方法:

var listOfObjecs = [

{id: 1, name: "Name 1", score: 11},

{id: 2, name: "Name 2", score: 22},

{id: 3, name: "Name 3", score: 33},

{id: 4, name: "Name 4", score: 44},

{id: 5, name: "Name 5", score: 55},

];

var isObjectExist = function(search){

return listOfObjecs.filter(function(obj){

if(obj.id===search.id && obj.name===search.name && obj.score===search.score){

return true;

}

return false;

});

}

console.log( isObjectExist({id: 3, name: "Name 3", score: 33}) );

//输出找到的对象 [{id: 3, name: "Name 3", score: 33}]

console.log( isObjectExist({id: 9, name: "Name 3", score: 33}) );

//输出一个空对象 []

这是因为:

filter()方法通过提供的函数实现的测试,创建一个包含所有通过测试的元素的新数组。

如果没有原生的JavaScript方法(返回true或false),如何更新isObjectExist()函数以返回true或false?

0