我想通过另一个对象数组过滤对象数组。
我有 2 个这样的对象数组:
const array = [
{ id: 1, name: 'a1', sub: { id: 6, name: 'a1 sub' } },
{ id: 2, name: 'a2', sub: null },
{ id: 3, name: 'a3', sub: { id: 8, name: 'a3 sub' } },
{ id: 4, name: 'a4', sub: null },
{ id: 5, name: 'a5', sub: { id: 10, name: 'a5 sub' } },
];
const anotherArray = [
{ id: 1, name: 'a1', sub: { id: 6, name: 'a1 sub' } },
{ id: 2, name: 'a2', sub: null },
{ id: 5, name: 'a5', sub: { id: 10, name: 'a5 sub' } },
];
我想要过滤器array
by anotherArray
并返回 anotherArray 中不存在且具有 sub 的项目。
所以我想要的输出是:
[ { id: 3, name: 'a3', sub: { id: 8, name: 'a3 sub' } ]
注意:我已经用 for 循环完成了此操作,但它运行速度太慢。我想使用数组过滤方法来做到这一点
我的 for 循环代码:
for (let i = 0; i < array.length; i += 1) {
let exist = false;
const item = array[i];
for (let j = 0; j < anotherArray.length; j += 1) {
const anotherItem = anotherArray[j];
if (item.id === anotherItem.id) {
exist = true;
}
}
if (item.sub && !exist) {
this.newArray.push({
text: `${item.sub.name} / ${item.name}`,
value: item.id,
});
}
}