如何从数组中删除所有相同的元素
例如,我有
var arr = [1,1,1,2,3,4,5,6,7];
我需要得到像这样的数组
[2,3,4,5,6,7];
我'使用这个
var chotch = 0;
for(var i = 0; i < text1_arr.length; i++) {
if(word1_reg.test(text1_arr[i])) {
text1_arr.splice(i, 1);
chotch++;
if(needCount === chotch) {
break;
}
} else {
continue;
}
}
答案 0 :(得分:1)
以下代码返回数组只发生 一次的元素。
ES6 解决方案。
var arr = [1,1,1,2,2,3,4,5];
(function cleanIt(arr) {
var arr2 = arr.filter((v, i) => arr.indexOf(v) != i);
var newArr = arr.filter(v => !arr2.includes(v));
console.log(newArr);
console.log(`Elements deleted: ${arr.length-newArr.length}`);
})(arr);
&#13;
ES5 解决方案。 注意:Array#includes
是ES6功能。
var arr = [1,1,1,2,2,3,4,5];
(function cleanIt(arr) {
var arr2 = arr.filter(function(v,i) {
return arr.indexOf(v) != i;
});
var newArr = arr.filter(function(v) {
return !arr2.includes(v);
});
console.log(newArr);
console.log('Elements deleted: ' + (arr.length - newArr.length));
})(arr);
&#13;
答案 1 :(得分:0)
function removeDuplicates(input){
var out = [];
var duplicates = [];
input.forEach(function(item){
if(duplicates.indexOf(item)!==-1)return;
var outIndex = out.indexOf(item)
if(outIndex!==-1){
out.splice(outIndex,1)
duplicates.push(item);
return;
}
out.push(item)
});
return out;
}
removeDuplicates([1,1,1,2,3,4,5,6,7]) // [2, 3, 4, 5, 6, 7]
答案 2 :(得分:0)
您可以使用indexOf和lastIndexOf对您的数组进行迭代,并检查其仅存在的每个项目。如果是,则将其添加到结果数组中。
var arr = [1,1,1,2,3,4,5,6,7];
var result = [];
for (var i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) === arr.lastIndexOf(arr[i])) {
result.push(arr[i]);
}
}
答案 3 :(得分:0)
此策略消除了可以找到2次的任何元素。
const arr = [1,1,1,2,3,4,5,6,7];
const uniqs = a => a.filter(e => a.slice(a.indexOf(e) + 1).indexOf(e) === -1);
console.log(uniqs(arr));