1. 程式人生 > 實用技巧 >js寫陣列去重

js寫陣列去重

題目描述

為 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; }