方法一:
ES6中的Set 对象存储的值总是唯一的,可以利用这点进行数组去重
let arr = [1,2,2,3,3,3,4,4,5,6,7,8,8,8,9];
let arr2 = Array.from(new Set(arr));
console.log(arr2); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
方法二:
利用对象的属性不能相同的特点去重
let arr = [1,2,2,3,3,3,4,4,5,6,7,8,8,8,9];
let arr2 = []; //去重结果
let obj = {};
arr.forEach((item)=>{
if(!obj[item]){
obj[item] = item;
arr2.push(item);
}
})
console.log(obj); // {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}
console.log(arr2); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
方法三:
使用双重for循环,再利用数组的splice方法去重(ES5常用)
let arr3 = [1,2,2,3,3,3,4,4,5,6,7,8,8,8,9];
for(var i=0,len=arr3.length;i<len;i++){
for(var j=i+1,len=arr3.length;j<len;j++){
if(arr3[i]===arr3[j]){
arr3.splice(j,1);
j--;
len--;
}
}
}
console.log(arr3); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
方法四:
利用数组的indexOf方法去重
let arr4 = [1,2,2,3,3,3,4,4,5,6,7,8,8,8,9];
let arr5 = [];
arr4.forEach(item=>{ //forEach 可以换成for循环
if(arr5.indexOf(item)==-1){
arr5.push(item)
}
})
console.log(arr5); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
方法五:
利用数组的filter方法去重:filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
let arr4 = [1,2,2,3,3,3,4,4,5,6,7,8,8,8,9];
let arr5 = [];
arr4.forEach(item=>{ //forEach 可以换成for循环
if(arr5.indexOf(item)==-1){
arr5.push(item)
}
})
console.log(arr5); // [1, 2, 3, 4, 5, 6, 7, 8, 9]