gpt4 book ai didi

javascript - Array.prototype.splice() 在迭代时不删除对象

转载 作者:行者123 更新时间:2023-11-28 15:10:27 27 4
gpt4 key购买 nike

我正在使用 mongodbObjectID 对象数组。我必须检查该数组是否包含重复项,如果是,则删除它们。

这是我的removeDuplicate 函数,它只是循环遍历具有两个索引的数组。如果两个对象相同,则 splice() 函数将删除其中一个。

function removeDuplicates(array) {
var a = array.concat(); // Copy object
for(var i=0; i<a.length; ++i) {
for(var j=i+1; j<a.length; ++j) {
console.log(a[i] + " vs " + a[j]);
if(a[i].equals(a[j]))
console.log("removed : " + a.splice(j--, 1));
}
}
return a;
}

假设我有一个简单的数组,其中包含两个相同的 ObjectID 对象。然后我调用 removeDuplicates 函数并传递该数组。最后,我打印出数组本身。

var array = [];

array.push(new ObjectID("56fc227026aed8e74a699b20"));
array.push(new ObjectID("56fc227026aed8e74a699b20"));

removeDuplicates(array);

console.log(array);

这是输出。如您所见,最后没有删除任何内容。

56fc227026aed8e74a699b20 vs 56fc227026aed8e74a699b20
removed : 56fc227026aed8e74a699b20
[ 56fc227026aed8e74a699b20, 56fc227026aed8e74a699b20 ]

我做错了什么?

最佳答案

您要将其从副本中删除,而不是从原件中删除。不过,您似乎正在记录原始记录,因此仍然包含重复项。

关于javascript - Array.prototype.splice() 在迭代时不删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36690793/

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