js配列は重さに行って、そして昇順並べ替えの常用方法は総括します.
2344 ワード
方法1:
二重循環、外層循環元素、内層循環時の比較値
同じ値がある場合はスキップし、異なる場合はプッシュ配列に進みます.
[...new Set(arr)].sort()
二重循環、外層循環元素、内層循環時の比較値
同じ値がある場合はスキップし、異なる場合はプッシュ配列に進みます.
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()