在一个对象数组中搜索对象时,是否有一个函数可以返回 true 或 false?
在一个对象数组中搜索对象时,是否有一个函数可以返回 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?