我們要將陣列
var arr =[1
,1,『true』,『true』,
true
,true,15
,15,false
,false
, undefined,undefined,
null
,null
,nan
,nan
,『nan』,0,
0, 『a』, 『a』,
,]
中重複的值過濾掉。
使用es6中的set是最簡單的去重方法,該方法可以說是最完美的方法,就是需要環境支援es6
var arr =[1
,1,'true'
,'true'
,true
,true,15
,15,false
,false
, undefined,
undefined,
null
,null
,nan
,nan
,'nan',0
,0,'a'
,'a',,
];function
arr_unique1
(arr)
arr_unique1
(arr)
;// (13)[1, "true", true, 15, false, undefined, null, nan, "nan", 0, "a", , ]
建立乙個空map資料結構,遍歷需要去重的陣列,把陣列的每乙個元素作為key存到map中。由於map中不會出現相同的key值,所以最終得到的就是去重後的結果。
function
arr_unique2
(arr)
else
}return array ;
} console.
log(
arr_unique2
(arr));
//(13) [1, "a", "true", true, 15, false, 1, , null, nan, nan, "nan", 0, "a", , undefined]
function
arr_unique3
(arr)
)function
loop
(index)
loop
(index -1)
;//遞迴loop,然後陣列去重}}
loop
(len-1)
;return array;}
console.
log(
arr_unique3
(arr));
//(14) [1, "a", "true", true, 15, false, 1, , null, nan, nan, "nan", 0, "a", , undefined]
該方法的不足之處在於無法對nan進行過濾,原因是var a = [1, nan , 2]; a.indexof(nan) === -1;,改善的方法是使用includes方法
function
arr_unique4
(arr)})
;return res;
}console.
log(
arr_unique4
(arr));
// (14) [1, "true", true, 15, false, undefined, null, nan, nan, "nan", 0, "a", , ]
美中不足的地方在於漏掉了nan,原因同方法上
function
arr_unique5
(arr));
}arr_unique5
(arr)
;// (12) [1, "true", true, 15, false, undefined, null, "nan", 0, "a", , ]
該方法也算是比較完美,沒有什麼遺漏的地方
function
arr_unique6
(arr)})
;return res;
}arr_unique6
(arr)
;// (13) [1, "true", true, 15, false, undefined, null, nan, "nan", 0, "a", , ]
function
arr_unique7
(arr)
return prev;},
);}arr_unique7
(arr)
;// (13)[1, "true", true, 15, false, undefined, null, nan, "nan", 0, "a", , ]
這是最麻煩的方法,效率十分低下,每乙個迴圈都會去動態獲取陣列的length。且該方法無法過濾掉nan,因為nan === nan的結果為false。
function
arr_unique8
(arr)}}
return arr;
}arr_unique8
(arr)
;// (14) [1, "true", true, 15, false, undefined, null, nan, nan, "nan", 0, "a", , ]
這種方法是終極版的,因為它可以進行陣列中的物件元素的去重!前面的幾種方法是不可以進行物件去重的。不過話說回來,js中的物件是本身就是乙個位址的引用,比如 {} == {} ;//false,兩者是兩個不同的物件,這裡我將其進行json.stringify進行簡化。
function
arr_unique9
(arr)
;return arr.
filter
((val)
=>);
}arr_unique9
(arr)
;// (12) [1, "true", true, 15, false, undefined, null, nan, "nan", 0, "a", ]
js中陣列去重
js中的陣列去重 1.建立乙個新陣列,把陣列中的每乙個元素插入到新陣列中 2.遍歷原陣列中每乙個元素分別和新陣列中的每乙個元素進行比較 第一種去重方法 原陣列 var arr 1 2,5 41,1 2,1 4,5 8,10 新陣列 var t t 0 arr 0 arr中的每乙個元素 for var...
JS中陣列去重問題
js中陣列去重問題 我總共想出了三種演算法來實現這個目的 array.prototype.unique1 function return n array.prototype.unique2 function r n為hash表,r為臨時陣列 for var i 0 i this.length i 遍...
js中陣列如何去重
比較簡單的去重方法一 方法一 要呼叫indexof 如果當前陣列的第i項在當前陣列 現的位置不是i,那麼就是重複項,是i那就存入陣列 function arr num return temp var aa 1,2,2 4,9,a a 2,3,5,6,5 console.log arr aa 方法二 ...