【发布时间】:2016-04-18 19:03:32
【问题描述】:
我正在处理一组mongodb 的ObjectID 对象。我必须检查这个数组是否包含重复项,如果是,请删除它们。
这是我拥有的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 arrays loops