js寫陣列去重
阿新 • • 發佈:2020-09-21
題目描述
為 Array 物件新增一個去除重複項的方法 剛剛拿到這個題的想法就是遍歷迴圈,在新陣列中查詢是否存在原陣列中的元素,用indexof()方法,等於-1時,用push進新陣列; Array.prototype.uniq = function () {var newarr=[];
for(var i=0;i<this.length;i++){
if(newarr.indexOf(this[i]) == -1){
newarr.push(this[i])
}
}
return newarr
} 但是看到別人的解法, 因為這類indexOf對於NaN和{}一律返回-1 發現{} != {} NaN != NaN, 所以要排除NaN,{} 用flag來判斷
Array.prototype.uniq =
function
() {
var
resArr = [];
var
flag =
true
;
for
(
var
i=0;i<
this
.length;i++){
if
(resArr.indexOf(
this
[i]) == -1){
if
(
this
[i] !=
this
[i]){
//排除 NaN
if
(flag){
resArr.push(
this
[i]);
flag =
false
;
}
}
else
{
resArr.push(
this
[i]);
}
}
}
return
resArr;
}