gpt4 book ai didi

javascript - 比较两个数组并删除不匹配的对象

转载 作者:行者123 更新时间:2023-12-03 07:50:06 24 4
gpt4 key购买 nike

我正在努力比较两个对象数组并从第一个数组中删除不匹配的对象。

All i need to compare two arrays (array1 and array2) of objects and remove NOT MATCHED objects from the array 1.

这是我到目前为止所做的,但它删除了所有项目。

for (var i = 0, len = array1.length; i < len; i++) {
for (var j = 0, len2 = array2.length; j < len2; j++) {
if (array1[i].Id != array2[j].Student.Id) {
array1.splice(j, 1);
len= array1;
}
}
}

最佳答案

如果您正在循环 array1i = 0, len = array1.length; i < len; i++ ,但是循环中,您从 array1 中删除了一个条目你认为下一个循环会发生什么?

您似乎还删除了已找到的内容,但您的问题表明您想要删除未找到的内容。在下面,根据您的评论,我将删除未找到的内容。

在这种情况下,请使用 while环形。我还会使用Array#some (ES5+) 或 Array#find (ES2015+)而不是进行内部循环:

var i = 0;
var entry1;
while (i < array1.length) {
entry1 = array1[i];
if (array2.some(function(entry2) { return entry1.Id === entry2.Student.Id; })) {
// Found, progress to next
++i;
} else {
// Not found, remove
array1.splice(i, 1);
}
}

或者,如果可以创建一个新数组,请使用 filter :

array1 = array1.filter(function(entry1) {
return array2.some(function(entry2) { return entry1.Id === entry2.Student.Id; }));
});

关于javascript - 比较两个数组并删除不匹配的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35035456/

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