【发布时间】:2019-02-10 12:36:28
【问题描述】:
a = [
{ id: 1, books: [1, 2, 3, 4] },
{ id: 2, books: [1, 2, 3] },
{ id: 3, books: [1, 2, 3, 4, 5] },
{ id: 9, books: [1, 2] }
];
b = [{ id: 2, books: [1, 2, 3] }, { id: 3, books: [1, 2, 3, 4, 5] }];
我想从a 中删除数组b 相同的id 元素。
怎么做?谢谢。
意思是:
我想得到a = [{id: 1, books: [1,2,3,4]}],去掉数组b中的相同元素;
我的代码是:
const delDuplicate = (a, b) => {
const bLen = b.length;
if (!bLen) return a;
for (let i = 0; i < a.length; i++) {
for (let j = 0; j < bLen; j++) {
if (a[i].id === b[j].id) {
const delItem = a.splice(i, 1)[0];
console.log(delItem);
}
}
}
return a;
};
a = delDuplicate(a, b);
有效,有没有更好的方法?我认为reduce 和map 也可以。
这两个数组不是简单的数组。所以不能用a.indexOf(b[i]) !== -1。
【问题讨论】:
-
你自己有没有尝试过?
-
您能否澄清一下:您想从第二个数组中删除两个数组中匹配的元素(相同的位置和值)?还是您想从第二个数组中删除具有相同 id 的元素,而不管 value/pos 是什么?
-
@AshwinGupta 我编辑了问题,对不起,我的英语不好。
标签: javascript arrays