數組去重的幾種方式
阿新 • • 發佈:2017-05-23
strong class 一個 spl spa cnblogs 不變 數字 {}
一、利用indexOf查找,ie9以下不兼容
function noRepeat(ary) { if (ary instanceof Array) { var newAry = []; for (var i = 0; i < ary.length; i++) { var cur = ary[i]; if (newAry.indexOf(cur) === -1) {//indexOf IE9以下不兼容 newAry.push(cur) } }return newAry; } }
二、利用對象屬性名不能重復的方法。(不適合引號包裹的數字)
1.用了聲明了一個新的數組和一個新的對象。
function noRepeat(ary){ if(ary instanceof Array){ var newAry = []; var obj ={}; // 不適合區分數組項是字符型的數字,例如:5與‘5‘, for(var i = 0; i < ary.length; i++ ){var cur = ary[i]; obj[cur] = cur; } //把對象的屬性名放到新數組中 for(var key in obj){ newAry.push(obj[key]); } return newAry; } }
2.for in
function noRepeat(ary) { if (ary instanceof Array) {var obj = {}; for (var i = 0; i < ary.length; i++) { var cur = ary[i]; obj[cur] = cur;/ } //再用一個數組存儲下 var ary2 = []; for (var key in obj) { ary2.push(obj[key]) } return ary2; } }
3.只聲明一個對象方式,利用splice刪除重復項
function noRepeat(ary){
if(ary instanceof Array){
var obj = {};
for(var i = 0; i < ary.length; ){
var cur = ary[i];
if(obj[cur] == cur){
ary.splice(i,1);
//刪除重復項後,i值不變但數組塌陷自定取到後面的一項。i<ary.length是動態計算的不會出錯。
}else{
obj[cur] = cur;
i++;
}
}
return ary;
}
}
數組去重的幾種方式