1. 程式人生 > >四種陣列去重

四種陣列去重

  var arr = [1,5,8,93,3,4,4,4,3,2,5,8,9,11];
  • one
    簡單粗暴,把每一個數都與其後邊的每一個數比較,相同的則刪掉後面重複的
          function distinct(arr) {
              let alen = arr.length;
                for(let i = 0;i<alen;i++){
                 for(let j = i+1;j<alen;j++){
                    if(arr[i] == arr[j]){
                       arr.splice(j,1
); alen--; // 長度發生變化 j--; // 每刪除一個數,陣列下標本來的位置就會被其他數給填了 } } } return arr; }
  • two
    把陣列先排序,構建新陣列,每次用原陣列的元素與新陣列的最後一個元素比較,不同則放進新陣列
 function distinct2(arr){
        let arr2 = arr.sort();
        let dist_arr2 = [arr2[0
]
]; for(let i = 0;i<arr2.length;i++){ if(arr2[i]!== dist_arr2[dist_arr2.length-1]){ dist_arr2 .push(arr2[i]); } } return dist_arr2 ; }
  • three
    ES6 的 set 與 … 去重
  var dist_arr3 = [...new Set(arr)];
  • four

indexOf 下標值為 i 的數,如果其第一次出現的位置是 i ,則放進新的陣列

// indexOf()方法返回在陣列中可以找到一個給定元素的第一個索引,如果不存在,則返回-1。
   function distinct4(arr){
        var dist_arr4 = [];
        for(let i = 0;i<arr.length;i++){
          if(arr.indexOf(arr[i]) == i ){
                dist_arr4 .push(arr[i]);
          }
        }
     return arr;
   }