陣列去重的幾種封裝方法
阿新 • • 發佈:2019-01-10
0、es6方法
let unique = new Set(arr);
console.log(Array.from(unique));
1、遍歷陣列法:
此方法缺點: IE8以下不支援 indexOF
function unique(array){
var n = [];
for(var i =0; i<array.length; i++){
if(n.indexOf(array[i])==-1){
n.push(array[i]);
}
}
return ;
}
2、物件鍵值對法;
此方法優點:速度最快, 缺點:佔空間最多 function unique(array){ var n = {}; var r = []; var len = array.length; var val; var type; for(var i=0; i<array.length; i++){ val = array[i]; type = typeof val ; if(!n[val]){ n[val] = [type]; r.push(val); } else if(n[val].indexOf(type)<0){ n[val].push(type); r.push(val); } } return r; }
3、陣列下標法:
function unique(array){
var n = [array[0]];
for(var i=1; i<array.length; i++){
if(array.indexOf(array[i])==i){
n.push(array[i]);
}
}
return n;
}
4、優化遍歷陣列法
function unique(array){ var r = []; for(var i=0; i<array.length; i++){ for(var j=i+1; j<array.length; j++){ if(array[i]===array[j]){ j=++i; } } r.push(array[i]) } return r; }
5、
function unique(array){
var arr = [];
var obj = {};
for(var i=0; i<arary.length; i++){
if(!obj[array[i]]){
obj[array[i]] = array[i];
arr.push(array[i])
}
}
return arr
}