在JavaScript中,有多种方法可以用来去除数组中的重复项。以下是一些常见的方法:
使用Set
ES6引入了Set数据结构,它只存储唯一值。我们可以利用这个特性来去除数组中的重复项。
let arr = [1, 2, 3, 4, 4, 5, 5, 5]; ?
let uniqueArr = [...new Set(arr)]; ?
console.log(uniqueArr); ?// 输出:[1, 2, 3, 4, 5]
使用filter方法
我们可以使用filter方法配合indexOf来达到去重的目的。
let arr = [1, 2, 3, 4, 4, 5, 5, 5]; ?
let uniqueArr = arr.filter((value, index, self) => { ?
? return self.indexOf(value) === index; ?
}); ?
console.log(uniqueArr); ?// 输出:[1, 2, 3, 4, 5]
使用reduce方法
我们也可以使用reduce方法来去重。
let arr = [1, 2, 3, 4, 4, 5, 5, 5]; ?
let uniqueArr = arr.reduce((accumulator, current) => { ?
? if (!accumulator.includes(current)) { ?
? ? accumulator.push(current); ?
? } ?
? return accumulator; ?
}, []); ?
console.log(uniqueArr); ?// 输出:[1, 2, 3, 4, 5]
自定义函数接卸
var array=['12','32','89','12','12','78','12','32'];
// 最简单数组去重法 新建?个空的结果数组,
//循环原数组,判断结果数组是否存在当前元素,
//for?
//如果有相同的值则跳过,不相同则
//进数组。
//
//push
functionunique1(array){
?个新的临时数组
var n =[];//
遍历当前数组
for(var i =0; i < array.length; i++){//
if(n.indexOf(array[i])==-1)
? ? ? ? ? ? ? ? n.push(array[i]);
}
return n;
}
arr=unique1(array);
// 速度最快,占空间最多(空间换时间)
functionunique2(array){
var n ={}, r =[], type;
for(var i =0; i < array.length; i++){
? ? ? ? ? ? type =typeof array[i];
if(!n[array[i]]){
? ? ? ? ? ? ? ? n[array[i]]=[type];
? ? ? ? ? ? ? ? r.push(array[i]);
? ? ? ? ? ? ? ? n[array[i]].push(type);
? ? ? ? ? ? ? ? r.push(array[i]);
}
}
return r;
}
//数组下标判断法
functionunique3(array){
结果数组
var n =[array[0]];//
从第?项开始遍历
for(var i =1; i < array.length; i++){//
if(array.indexOf(array[i])== i)
? ? ? ? ? ? ? ? n.push(array[i]);
}
return n;
}
?
以上是几种常见的数组去重方法,你可以根据实际需求选择适合的方法。