gpt4 book ai didi

javascript - 如果数组的 ID 与其他数组对象相同,如何删除该数组的对象

转载 作者:行者123 更新时间:2023-12-03 07:18:55 30 4
gpt4 key购买 nike

我正在尝试删除一个数组的对象,如果它的 ID 与另一个数组中的对象的 ID 相同。但我不知道该怎么做。

例子:

parentArray1 = [ 
{
id: 101
...
}, {
REMOVE THIS OBJECT BECAUSE ITS ID IS THE SAME AS parentArray2[0].id
id: 102
...
}, {
id: 103
...
}
];

parentArray2 = [
{
id: 102 // SAME ID AS parentArray1[1].id
...
}
];

有没有人有想法或解决方案?

最佳答案

过滤,保留一个元素,如果它不匹配第二个some元素:

parentArray1.filter(elt1 => !parentArray2.some(elt2 => elt2.id === elt1.id))

这里是逐行注释的格式:

parentArray1                       // From parentArray1
.filter( // keep all the
elt1 => // elements for which
! // it is not the case that
parentArray2 // parentArray2
.some( // has some
elt2 => // elements for which
elt2.id // the id
=== // is equal to
elt1.id)) // the id of the first element.

为您介绍一些 ES6 解构:

parentArray1.filter(({id1}) => !parentArray2.some(({id2}) => id1 === id2))

在 ES5 中,没有箭头函数:

parentArray.filter(function(elt1) {
return !parentArray2.some(function(elt2) {
return elt2.id === elt1.id;
});
})

如果您想使用 for 循环执行此操作:

result = [];

for (var i = 0; i < parentArray1.length; i++) {
var include = true;
for (var j = 0; j < parentArray2.length; j++) {
if (parentArray1[i].id === parentArray2[j].id) include = false;
}
if (include) result.push(parentArray1[i]);
}

您可能还需要考虑预先计算要删除的 ID 列表:

var removeIds = parentArray2.map(elt => elt.id);

现在您可以更轻松地过滤 parentArray1:

parentArray1.filter(elt => !removeIds.contains(elt.id))

关于javascript - 如果数组的 ID 与其他数组对象相同,如何删除该数组的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41506241/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com