前端開發避免不了對各種資料型別的處理,其中陣列的排序和去重是必備的技能,往往面試時也也會經常遇到。
1.簡單的sort排序:
var arr=[1
,5,3
,87,23
];arr.
sort
(function
(a,b)
)console.
log(arr)
//輸出:[1,23,3,5,87]
注:若返回b-a可獲得從大到小的排序;
陣列的sort方法只能實現簡單的按位排序,並不精確。如下:
var arr=[1,2,4,5,11,22];
arr.sort(function(a,b))
console.log(arr)//輸出:[1,11,2,22,4,5]
2.氣泡排序var arr=[1
,5,2
,6,3
,3,4
,56,7
,5,5
,5,6
,7,8
];function fn
(arr)}}
return arr;
}
3.選擇排序function fn
(arr)
}var temp=arr[i]
;//每輪比較結束,將最初假定的最小值和實際最小值交換
arr[i]
=arr[minindex]
; arr[minindex]
=temp;
}return arr;
//將排序後的陣列返回
}
1.陣列sort加splice擷取去重(推薦)
原理:使用sort進行簡單排序,將相同項放一起,然後迴圈比較擷取
var arr1=[1
,3,6
,6,6
,4];
function norepeat
(arr)
}return arr;
}console.
log(
norepeat
(arr1)
);
2.陣列splice擷取方法去重var arr1=[1
,3,6
,6,6
,4];
function norepeat
(arr)}}
return arr;
}console.
log(
norepeat
(arr1)
);
3.陣列indexof方法去重(推薦)
原理:若陣列中不包含某一元素則它的indexof值為-1,若為-1則將該元素放入新陣列中,最終返回新陣列即為去重後的陣列
function norepeat
(arr)
}return newarr;
}
4.借助物件的特性去重(推薦)
原理:若object裡不存在某一屬性,其值為undefined;把陣列中的元素當物件的屬性來判斷
先宣告乙個空陣列和乙個空物件,然後遍歷陣列,判斷物件中是否含有該屬性,若為undefined則將該元素放入新陣列中,並給與該屬性乙個屬性值1,最終返回新陣列即為去重後的陣列
var arr1=[1
,3,6
,6,6
,4];
function norepeat
(arr)
;for
(var i=
0;ireturn newarr;
}console.
log(
norepeat
(arr1)
);
es6新增方法
5.set與解構賦值去重
function unique
(arr)
return
[...
newset
(arr)
]}
6.array.from與set去重function unique
(arr)
return array.
from
(new
set(arr)
)}
7.利用filter的陣列去重var r;
var arr =[,
'strawberry'
,'banana'
,'pear',,
'orange'
,'orange'
,'strawberry'];
r = arr.
filter
(function (element, index, self));
alert
(r);
以上提供了多種陣列去重方法,可自行選擇使用,也可自行測試這幾種方法的耗時效能。 幾種陣列去重方法
使用es6中的set是最簡單的去重方法。var arr 1 1,true true true true,15 15,false false undefined,undefined,null null nan nan nan 0 0,a a function arr unique1 arr arr u...
JS常見的幾種陣列去重方法
總結一下js中用到的陣列去重的方法 方法一 該方法利用物件的屬性值不能相同 function arrdellikeelement array for let i in array return result arr arrdellikeelement arr 方法二 該方法使用es6中的對映方法 f...
多種陣列去重的方法
陣列內都是數字方法 1.建立乙個空陣列,用於存放不重複的值 2.給陣列排序 3.用遞迴相鄰逐個對比,如果不相同,則push到建立的空陣列裡面去 var a 1,2,5,6,2,1,0,2,8,4,56,4,65,4 var n var s a.sort function a,b function c...