我要检查arr1是否包含arr2
我可以尝试使用.some并包含它,但不能为我返回正确的答案
arr1=[{Name:'John',Age:18},{Name:'Leona',Age:19},{Name:'Steve',Age:'21'}]
arr2=[{Name:'John',Age:18},{Name:'Hana',Age:19},{Name:'Josh',Age:20}]
我的期望
arr1=[{Name:'John',Age:18},{Name:'Leona',Age:19},{Name:'Steve',Age:'21'},{Name:'Hana',Age:19},{Name:'Josh',Age:20}]
答案 0 :(得分:0)
您可以将array#every
与array#some
一起使用。遍历arr2
中的每个对象,并检查arr1
中是否存在该对象。
let arr1=[{Name:'John',Age:18},{Name:'Leona',Age:19}],
arr2=[{Name:'John',Age:18}],
result = arr2.every(({Name, Age}) => {
return arr1.some(o => o.Name === Name && o.Age === Age);
});
console.log(result);
答案 1 :(得分:0)
由于它们不是同一对象,而只是具有相同值的对象,因此您必须比较每个值。
const arr1 = [{
Name: 'John',
Age: 18
}, {
Name: 'Leona',
Age: 19
}];
const arr2 = [{
Name: 'John',
Age: 18
}];
const check = arr1.some(e1 => arr2.some(e2 => e1.Name === e2.Name && e1.Age === e2.Age));
console.log(check);
答案 2 :(得分:0)
您可以缩小第一个数组并检查Name
是否不在第一个数组中,然后将其添加到结果集中。
var array1 = [{ Name: 'John', Age: 18 }, { Name: 'Leona', Age: 19 }, { Name: 'Steve', Age: '21' }],
array2 = [{ Name: 'John', Age: 18 }, { Name: 'Hana', Age: 19 }, { Name: 'Josh', Age: 20 }];
array2.reduce((r, o) => {
if (!r.some(({ Name }) => o.Name === Name)) r.push(o);
return r;
}, array1);
console.log(array1);
.as-console-wrapper { max-height: 100% !important; top: 0; }