js陣列去重並且升序排序常用方法總結
阿新 • • 發佈:2018-12-31
方法一:
雙層迴圈,外層迴圈元素,內層迴圈時比較值
如果有相同的值則跳過,不相同則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查詢
方法四:利用hash陣列<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>
<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()