gpt4 book ai didi

javascript - 如何比较两个对象并删除重复项

转载 作者:行者123 更新时间:2023-12-01 01:09:59 25 4
gpt4 key购买 nike

我正在尝试比较两个对象并通过拼接从第一个对象中删除重复值。有没有最好的解决方案来实现这一点

Record1 = [{"ID":"938"},{"ID":"939"}];

Record2 = [{"IDN":"938"},{"IDN":"939"}];

for (var k = 0; k < Record1.length; k++) {
for (var l = 0; l < Record2.length; l++) {
if (Record1[k].ID == Record2[l].IDN) {
Record1.splice(k, 1);
break;
}
}
}

console.log(''+ JSON.stringify(Record1));

Actual result> Record1 = [{"ID":"939"}];

Expected result> Record1 = [];

最佳答案

当您使用 for 循环迭代 Record1 时,从索引 0 开始向上递增 - 这意味着某些项目将会丢失。 (例如,如果您在 k 为 0 时break,则拼接后索引 0 处的new 项将永远不会被检查。)改为 Record1end,以便拼接的 k 索引将始终引用正确索引处的元素:

Record1 = [{"ID":"938"},{"ID":"939"}];

Record2 = [{"IDN":"938"},{"IDN":"939"}];

for (var k = Record1.length - 1; k >= 0; k--) {
for (var l = 0; l < Record2.length; l++) {
if (Record1[k].ID == Record2[l].IDN) {
Record1.splice(k, 1);
break;
}
}
}

console.log(''+ JSON.stringify(Record1));

或者,更好的是,使用 Set 来降低计算复杂性,并使用 filter 创建新数组:

Record1 = [{"ID":"938"},{"ID":"939"}];
Record2 = [{"IDN":"938"},{"IDN":"939"}];

const IDNs = new Set(Record2.map(({ IDN }) => IDN));
const Record1WithoutDupes = Record1.filter(({ ID }) => !IDNs.has(ID));
console.log(Record1WithoutDupes);

关于javascript - 如何比较两个对象并删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55250023/

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