这个问题看起来可能与[ ] [1] Remove Duplicates from JavaScript Array, 但它确实不同: 我需要在数组中找到相同的元素并将它们全部删除,例如
var arr1 = ["andesite", "grass", "dirt", "pink wool", "dead shrub", "grass"];
结果必须是:
var arr1 = ["andesite", "dirt", "pink wool", "dead shrub"];
我想要的是发现“草”在那里两次,并从阵列中排除两者。 我尝试过像
这样的东西function inArray(arr){
var index = [];
var count = arr.length;
for(var i=0;i<count;i++){
if(arr[i] in index){
arr.splice([i],1);
}else{
index1.push(arr[i]);
}
}
return arr;
} 但是当它与第一个重复元素进行比较时,它只删除第二个重复元素。
提前感谢您的任何回复。这对我来说是一项教育任务,因此,我将非常感谢其解释如何运作。
答案 0 :(得分:2)
好的,所以第一步当然要确定要删除哪些元素。第二步是删除它们。
识别重复项很容易,可以通过多种方式完成。我就是这样做的:
var counts = {};
for( var i=0, l=arr.length; i<l; i++) {
counts[arr[i]] = (counts[arr[i]] || 0) + 1;
}
counts
中任何值大于1
的密钥现在都需要删除。这也很简单:
var result = arr.filter(function(item) {
return counts[item] <= 1;
});
而且......完成了!这将过滤掉counts[item] <= 1
失败的所有项目,有效删除出现两次或更多次的项目。就这么简单^^