a = [{ "id": "1231" }, { "id": "9387" }, { "id": "68433" }, { "id": "43566" }]
b = [{ "id": "1231" }, { "id": "43566" }]
预期结果为 c = [{ "id": "9387" }, { "id": "68433" }]
求教大神
a = [{ "id": "1231" }, { "id": "9387" }, { "id": "68433" }, { "id": "43566" }]
b = [{ "id": "1231" }, { "id": "43566" }]
预期结果为 c = [{ "id": "9387" }, { "id": "68433" }]
求教大神
var a = [{ "id": "1231" }, { "id": "9387" }, { "id": "68433" }, { "id": "43566" }],
b = [{ "id": "1231" }, { "id": "43566" }],
c = a.filter(function(o) {
return b.every(function(e){
return o.id !== e.id;
});
});
alert(JSON.stringify(c));
提供一个思路,把两个数组连接成一个数组,然后就是对数组的去重了。
let a = [{ "id": "1231" }, { "id": "9387" }, { "id": "68433" }, { "id": "43566" }]
let b = [{ "id": "1231" }, { "id": "43566" }]
let obj = [...a, ...b].reduce((obj, val) => {
let str = JSON.stringify(val)
obj[str] = obj[str] ? ++obj[str] : 1
return obj
}, {})
let c = Object.keys(obj).filter(key => obj[key] === 1)
如果题主去重是要把相同的从两边都删掉,以多的为准的话,就是下面这样:如果 key 可能为 对象的话,还需要做JSON.stringify 处理,有问题留言
let a = [{ "id": "1231" }, { "id": "9387" }, { "id": "68433" }, { "id": "43566" }];
let b = [{ "id": "1231" }, { "id": "43566" }];
function uniqueArr(arrA, arrB, key) {
let bigArr = arrA.length > arrB.length ? arrA : arrB,
smallArr = arrA.length <= arrB.length ? arrA : arrB;
smallArrData = smallArr.map((obj, index) => obj[key]);
return bigArr.filter((obj, index) => smallArrData.indexOf(obj[key]) === -1);
}
console.log(uniqueArr(a, b));
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
我写了一个方法,用到了
ES6
,你直接复制执行便可看到效果,希望能帮助到你: