1. 程式人生 > 實用技巧 >陣列去重的一些方法和思路 總有一個你會的!!! 不全之處敬請見諒

陣列去重的一些方法和思路 總有一個你會的!!! 不全之處敬請見諒

  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>