tes*_*est 2 javascript ecmascript-6
想要将两个数组与对象进行比较并通过其属性名称删除重复项,我有这两个:
arr1 = [{
item:"apple",
description: "lorem"
},{
item:"peach",
description: "impsum"
}]
arr2 = [{
item:"apple", description: "dolor"
},{
item:"grape", description: "enum"
}]
Run Code Online (Sandbox Code Playgroud)
我想要这个结果:
arr3 = [{
item:"peach", description: "impsum"
},{
item:"grape", description: "enum"
}]
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这种 es6 方法但不起作用arr3 = arr1.filter(val => !arr2.includes(val));
Array.includes不会工作,因为在 javascript 中{} !== {}。您需要另一种方法,例如Array.every检查另一个数组中的每个对象是否具有item与当前对象相同的属性值。另外,您需要同时执行arr1.filter(...)andarr2.filter(...)和concat结果:
arr3 = [].concat(
arr1.filter(obj1 => arr2.every(obj2 => obj1.item !== obj2.item)),
arr2.filter(obj2 => arr1.every(obj1 => obj2.item !== obj1.item))
);
Run Code Online (Sandbox Code Playgroud)
例子:
arr3 = [].concat(
arr1.filter(obj1 => arr2.every(obj2 => obj1.item !== obj2.item)),
arr2.filter(obj2 => arr1.every(obj1 => obj2.item !== obj1.item))
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6637 次 |
| 最近记录: |