数组去重的一些方法和思路 总有一个你会的!!! 不全之处敬请见谅
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>