1. 程式人生 > >js陣列去重並且升序排序常用方法總結

js陣列去重並且升序排序常用方法總結

方法一:

雙層迴圈,外層迴圈元素,內層迴圈時比較值

如果有相同的值則跳過,不相同則push進陣列

Array.prototype.distinct = function(){
 var arr = this,
  result = [],
  i,
  j,
  len = arr.length;
 for(i = 0; i < len; i++){
  for(j = i + 1; j < len; j++){
   if(arr[i] === arr[j]){
    j = ++i;
   }
  }
  result.push(arr[i]);
 }
 return result;
}
var array = [1,2,3,4,4,1,1,2,1,1,1];
array.distinct();    //返回[3,4,2,1]
array.sort(function (x,y) {
            return y-x;
        });
方法二:利用物件的屬性不能相同的特點進行去重
Array.prototype.distinct = function (){
 var arr = this,
  i,
  obj = {},
  result = [],
  len = arr.length;
 for(i = 0; i< arr.length; i++){
  if(!obj[arr[i]]){ //如果能查詢到,證明陣列元素重複了
   obj[arr[i]] = 1;
   result.push(arr[i]);
  }
 }
 return result;
};
var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];
var b = a.distinct();
array.sort(function (x,y) {
            return y-x;
        });

方法三:利用新陣列indexOf查詢

<script>
       var arr=[1,8,5,6,4,2,3,8,6,7,5,3];
       var res=[];
       for(var i=0;i<arr.length;i++){
         if(res.indexOf(arr[i])==-1){
             res.push(arr[i]);
             res.sort();
         }
      }
     console.log(res);
</script>
方法四:利用hash陣列
<script>
    var arr=[1,8,5,6,4,2,3,8,6,7,5,3];
    var n={},r=[];  //n為hash表,r為臨時陣列
        for(var i=0;i<arr.length;i++){
          if(!n[arr[i]]){ //如果hash表中沒有當前項
             n[arr[i]]=true;   /把當前項/存入hash表
            r.push(arr[i]); //把當前項
             r.sort();
             r.severse();
           }
         }
  console.log(r);
</script>

方法五es6:

[...new Set(arr)].sort()