我有一个对象数组如下
[{name: "jack", age: 10}, {name: "john", age: 15}]
考虑我有一个对象
{name: "jack", age: 10}
现在我需要检查数组中是否存在此对象。如果对象的所有属性(名称,年龄)都匹配,则在页面上显示警报。
如何使用纯JavaScript实现此目的?
答案 0 :(得分:0)
使用Array.some,Array.every和Object.entries
如果
,将会计算一场比赛
var arr = [{name: "jack", age: 10}, {name: "john", age: 15}];
var input = {name: "jack", age: 10};
var result = arr.some((o) => Object.entries(input).every(([k,v]) => o[k] === v) && Object.keys(input).length === Object.keys(o).length);
console.log(result);
答案 1 :(得分:0)
试试这个:
var data = [{name: "jack", age: 10}, {name: "john", age: 15}];
var input = {name: "jack", age: 10};
for(var i=0;i<data.length;i++)
{
if(data[i].name==input.name && data[i].age == input.age)
{
alert('matched');
break;
}
}
答案 2 :(得分:0)
这可能是一个表现不佳的方法,但它可以轻松覆盖嵌套对象的情况。此选项仅适用于所有键/值对必须匹配且键/值对以相同顺序定义的情况。
let c = [{name: "jack", age: 10}, {name: "john", age: 15}],
s = {name: "jack", age: 10};
console.log(c.filter(e => JSON.stringify(s) === JSON.stringify(e)));
&#13;
答案 3 :(得分:0)
如果您不想检查数组对象内的对象索引
,可以尝试此操作
var obj = [{name: "jack", age: 10}, {name: "john", age: 15}];
var checkObj = {name: "john", age: 15};
if(JSON.stringify(obj).indexOf(JSON.stringify(checkObj)) >= 0){
console.log("Object Available");
}else{
console.log("Object Not Available");
}