天天看點

JavaScript中數組去重的幾種常用方法

項目中經常會處理一些資料,像一個json資料,裡邊全是數組,要把所有的資料的相同的屬性值放在一個數組裡,然後再判重,擷取最終的資料,是以就會經常用到數組判重,于是找了幾個常用的方法。如下:
           

第一種:先把原數組的第一個值傳進新數組,然後從索引為1開始周遊原數組,周遊每一個的時候再周遊新數組的每一項,如果不全等的話,把原數組的這個值寫入新數組,這樣最後得到的新數組就是不重複的值。

function unique(arr){

  var res = [arr[]];

  for(var i=;i<arr.length;i++){

    var repeat = false;

    for(var j=;j<res.length;j++){

      if(arr[i] === res[j]){

        repeat = true;

        break;

      }

    }

    if(!repeat){

      res.push(arr[i]);

    }

  }

  return res;

}
           

第二種:先把原數組排序,所有格式不同的也都會排到一起去,然後比較最後一個是不是和數組的任何一項一樣,不一樣則添進新數組。

function unique(arr){

  var arr2 = arr.sort();

  var res = [arr2[]];

  for(var i=;i<arr2.length;i++){

    if(arr2[i] !== res[res.length-]){

      res.push(arr2[i]);

    }

  }

  return res;

}
           

第三種:利用json屬性是否一樣去重,把原數組的每一項的值添進json的屬性,每次周遊原數組看是否已經存在了這個json屬性,如果沒有存在就添進json屬性和添進新數組。

function unique(arr){

  var res =[];

  var json = {};

  for(var i=;i<arr.length;i++){

    if(!json[arr[i]]){

      res.push(arr[i]);

      json[arr[i]] = ;

    }

  }

  return res;

}
           

第四種:個人覺得這一個是最簡潔的去重方式,還沒有很大的彎。就是首先把原數組的第一項值添進新數組,完事周遊原數組,把原數組的每一項值放在新數組裡indexof()方法看是否存在,如果不存在則把這個值添進新數組。

function unique(arr){
     var newArr = [arr[]];
     for(var i=;i<arr.length;i++){
    if(newArr.indexOf(arr[i]) == -){
             newArr.push(arr[i]);
        }
        }
        return newArr;
   }
           

繼續閱讀