js配列は重さに行って、そして昇順並べ替えの常用方法は総括します.

2344 ワード

方法1:
二重循環、外層循環元素、内層循環時の比較値
同じ値がある場合はスキップし、異なる場合はプッシュ配列に進みます.
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;
        });
方法3:新しい配列indexOfを利用して検索する

       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);
方法四:hash配列を利用する

    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);
方法五es 6:
[...new Set(arr)].sort()