1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title>数组去重</title>
6 </head>
7 <body>
8 </body>
9 <script type="text/javascript">
10 var arr = [1,8,8,2,2,3,4,5,5,6,6,6,7]
11
12
13 //方法一 简单粗暴
14 // var arr = new Set(arr);
15 // console.log(arr) //==>[1,2,3,4,5,6,7]
16
17
18 /****************************************************************/
19 //方法二 先转对象只拿key
20 // var obj = {};
21 // for(var i = 0 ;i<arr.length;i++){
22 // if(!obj[arr[i]]){
23 // obj[arr[i]] = 1
24 // }else{
25 // obj[arr[i]] ++
26 // }
27 // }
28 // console.log(obj)
29
30 //只拿key 一
31 // var arr2 = Object.keys(obj)
32 // console.log(arr2)
33
34 //只拿key 二
35 // var arr2 = [];
36 // for(var attr in obj){
37 // arr2.push(attr)
38 // }
39 // console.log(arr2)
40
41
42 /********************************************************************************/
43
44
45 //方法三
46 // var arr1=[];
47 // for(var i=0;i<arr.length;i++){
48 // //得到arr中的每一个元素,在arr1中根据元素找索引,找不到,就把arr[i]推进arr1里
49 // if(arr1.indexOf(arr[i])===-1){
50 // arr1.push(arr[i]);
51 // }
52 // }
53 // console.log(arr1) ////==>[1,2,3,4,5,6,7]
54
55
56
57 /*************************************************************************/
58
59 //方法四 转字符串转数组
60 // var str = arr.toString();
61 // var str1 = "";
62 // for(var i =0;i<str.length;i++){
63 // if(str1.indexOf(str[i])==-1 && str[i] !== ","){
64 // str1 += str[i]+","
65 // }
66 // }
67 // str1 = str1.slice(0,str1.length-1)
68 // console.log(str1.split(','))
69
70 /**************************************************************************/
71
72
73 //方法四 双层循环,外循环表示从0到arr.length,内循环表示从i+1到arr.length,将没重复的右边值放入新数组。
74 //(检测到有重复值时终止当前循环同时进入外层循环的下一轮判断)
75 // function unique(arr){
76 // var newArr = [];
77 // for(var i = 0;i<arr.length;i++){
78 // for(var j=i+1;j<arr.length;j++){
79 // if(arr[i] == arr[j]){
80 // ++i
81 // }
82 // }
83 // newArr.push(arr[i])
84 // }
85 // return newArr
86 // }
87 // console.log(unique(arr))
88
89 /*****************************************************************************************/
90 //方法五 给传入数组排序,排序后相同值相邻, 然后遍历时,
91 // 新数组只加入不与前一值重复的值。会打乱原来数组的顺序
92
93 // function unique(arr){
94 // arr.sort();
95 // var newArr = [arr[0]];
96 // for(var i =1;i<arr.length;i++){
97 // if(arr[i] !== newArr[newArr.length-1]){
98 // newArr.push(arr[i])
99 // }
100 // }
101 // return newArr
102 // }
103 // console.log(unique(arr))
104
105 </script>
106 </html>