1、for循环遍历
let arr = [1,2,3,4,5,6,1,3,5,2,4,6];
for(let i = 0; i < arr.length; i++){
for(let j = i+1; j < arr.length; j++){
if(arr[i] === arr[j]){
arr.splice(j , 1);
j--;
};
};
两层for循环比较arr[i]到arr[i+1~arr.length],相同则splice(i+1,1)去重
2、使用IndexOf方法去重
let arr = [1,2,3,4,5,6,1,3,5,2,4,6];
let arr2 = [];
for (let i = 0; i < arr.length; i++) {
if (arr2.indexOf(arr[i]) === -1) {
arr2.push(arr[i]);
};
};
indexOf方法如果找不到就会返回-1
3、使用set方法去重
let arr = [1,2,3,4,5,6,1,3,5,2,4,6];
function reset(arr){
return Array.from(new Set(arr));
};
let arr2 = reset(arr);
Set类似于数组,区别在于它所有的成员都是唯一的,不能有重复的值
4、使用sort方法排序去重
let arr = [1,2,3,4,5,6,1,3,5,2,4,6];
arr = arr.sort();
let arr2 = [];
for(let i = 0; i < arr.length; i++){
if(arr[i] !== arr[i+1]){
arr2.push(arr[i]);
};
};
先使用sort方法排序好数组,然后比较数组的前后两项是否相同,如果相同就使用push方法添加到新的数组中
5、使用includes方法去重
let arr = [1,2,3,4,5,6,1,3,5,2,4,6];
let arr2 = [];
for(let i = 0; i < arr.length; i++){
if(!arr2.includes(arr[i])){
arr2.push(arr[i]);
};
};
类似于indexOf方法,includes方法会检测数组是否存在传入的值,存在返回true
6、使用filter方法去重
let arr = [1,2,3,4,5,6,1,3,5,2,4,6];
let arr2 = arr.filter((item, i, self) => self.indexOf(item, 0) === i);
filter是es6的过滤数组的方法,使用filter结合indexOf方法能比较有效的去重