數(shù)組去重的三種方法
前兩天面試的時候颈嚼,面試官出的考題。現(xiàn)在我來總結一下饭寺,算是慢慢積累吧
1.兩個循環(huán)阻课,挨個對比
function uniqueArr(arr) {
var ret = [],
length = arr.length;
for(var i = 0;i < length; i++){
for(j = i+1; j<length;j++){
if(arr[i] === arr[j]){
j = ++i;
}
}
ret.push(arr[i]);
}
return ret;
}
這種方式應該是可以最容易考慮到的,但是數(shù)組過長的話艰匙,效率應該會變差限煞。
2.先排序然后用一次循環(huán)
function uniqueArr(arr) {
var sortedArr = arr.sort();
var results = [];
for (var i = 0; i < arr.length; i++) {
if (sortedArr[i + 1] != sortedArr[i]) {
results.push(sortedArr[i]);
}
}
return results;
}
排序后用數(shù)組后一位比較前一位,一次循環(huán)就好了员凝,但是破壞了原有數(shù)組的順序署驻。
3.利用對象字面量的key與value關聯(lián)性,寫起來比較簡單
function uniqueArr(arr) {
var ret = [],
json = {},
length = arr.length;
for(var i = 0; i < length; i++){
var val = arr[i];
if(!json[val]){
json[val] = 1;
ret.push(val);
}
}
return ret;
}
也許這種方法想的時候難想到健霹,但是用起來真的很簡單~
原文地址:<a >Jimliu寫字的地方</a>歡迎來踩