排序后去重
function repeatReduce(array) {
sorArray = array.sort()
for (i = 1; i < array.length; i++) {
if (array[i - 1] == array[i]) {
array.splice(i, 1)
}
}
console.log(array)
}
双重for循环配合splie去重
//先定义一个数组
var arr=[1,2,2,3,4,4,5]
//双重for循环
for(i = 0;i < arr.length; i++){
for(j = i+1;j < arr.length; j++){
//如果数组中有两个数相等,这里用三位运算符
if(arr[i] === arr[j]){
//在第j个元素开始删除,删除1个元素。splice方法,还可以对多个对象中的某个或某几个对象删除
arr.splice(j,1);
j--;
}
}
}
console.log(arr)
map循环配合Array.from去重
const arr = [1, 2, 2, 3, 4, 4, 5];
const newArr = Array.from(new Map(arr.map(item => [item, item])).values());
console.log(newArr); // [1, 2, 3, 4, 5]
这段代码的原理是,先使用map
方法将数组元素映射为键值对的数组。然后使用Map
构造函数将键值对数组转换为Map
对象,其中键和值均为数组的元素。由于Map
对象中键是唯一的,这样就自动去除了数组中的重复项。最后,通过Array.from()
方法将去重后的Map
对象的值转换为新的数组。
set()去重
let arr = [1, 2, 2, 3, 4, 4, 5];
let newArr = [...new Set(arr)];
console.log(newArr); // [1, 2, 3, 4, 5]
这里使用了ES6中的Set
数据结构来创建一个去重后的新数组newArr
。
filter()去重
let arr = [1, 2, 2, 3, 4, 4, 5];
let newArr = arr.filter((value, index, self) => {
return self.indexOf(value) === index;
});
console.log(newArr); // [1, 2, 3, 4, 5]