1、第一种 set参数中的值不能重复
1 var arr = [1, 2, 2, 3, 3, 4, 4, 1, 5, 5]; 2 var setArr = new Set(arr); 3 var newArr = Array.from(setArr); 4 console.log(newArr);
打印结果为: [ 1, 2, 3, 4, 5 ]
2、可以利用双重循环体遍历数组去重,声明一个flag
1 var arr = [1, 2, 2, 3, 3, 4, 4, 1, 5, 5]; 2 var newArr = []; 3 for (var i = 0; i < arr.length; i++) { 4 var flag = true; //这里声明flag 5 for (var j = 0; j < newArr.length; j++) { 6 if (arr[i] == newArr[j]) { 7 flag = false; 8 } 9 } 10 if (flag) { 11 newArr.push(arr[i]); 12 } 13 } 14 console.log(newArr);// [ 1, 2, 3, 4, 5 ]
3、indexOf
其中一种
1 var arr = [1, 2, 2, 3, 3, 4, 4, 1, 5, 5]; 2 var newArr = []; 3 for (var i = 0; i < arr.length; i++) { 4 if (arr.indexOf(arr[i]) === i) { 5 newArr.push(arr[i]); 6 } 7 } 8 console.log(newArr);//[ 1, 2, 3, 4, 5 ]
第二种
1 var arr = [1, 2, 2, 3, 3, 4, 4, 1, 5, 5]; 2 var newArr4 = []; 3 for (var i = 0; i < arr.length; i++) { 4 if (newArr4.indexOf(arr[i]) == -1) { 5 newArr4.push(arr[i]); 6 } 7 } 8 console.log(newArr4);
4.利用对象去重
1 var arr = [1, 2, 2, 3, 3, 4, 4, 1, 5, 5]; 2 var newArr = []; 3 function fn(arr) { 4 var obj = {}; 5 for (var i = 0; i < arr.length; i++) { 6 if (!obj[arr[i]]) { 7 newArr.push(arr[i]); 8 obj[arr[i]] = 1; 9 } 10 } 11 return newArr; 12 }
结束了!!!
暂时总结的就这些了之后慢慢补充。。。