JS-數(shù)組去重
2021-04-13 11:11 作者:hey_just_do_it | 我要投稿
數(shù)組去重
一、雙for循環(huán)方式

splice引起的數(shù)組塌陷問題
在刪除重復(fù)項后,后面每一項的索引都會向前提一位,這樣(如果刪除的這一項后面還有1000萬項,那么這1000萬項的索引都要向前提一位),這樣會大大的消耗性能。
解決:我們用最后一項替換刪除項,再刪除最后一項(下一輪循環(huán)還要從當(dāng)前項開始),這樣就不會導(dǎo)致索引前置,從而達(dá)到優(yōu)化性能的目的。
二、對象鍵值對的方式

優(yōu)點(diǎn):
只有一個循環(huán),所以性能很好
缺點(diǎn):
1.如果數(shù)組中出現(xiàn)對象則會存在問題,因?yàn)閷ο蟮膶傩悦荒苁菍ο?,遇到會轉(zhuǎn)換為字符串;
2.如果數(shù)組中存在數(shù)字10和字符串'10',則也會認(rèn)為是重復(fù)的,因?yàn)閷ο笾械膶傩悦菙?shù)字和字符串沒有區(qū)別的;
3.數(shù)組中的值如果是undefined可能也會出現(xiàn)問題....
三、indexOf

缺點(diǎn)
indexOf低版本瀏覽器不兼容
四、ES6新特性:Set方式
Set數(shù)據(jù)結(jié)構(gòu)會自動去重

缺點(diǎn)
低版本瀏覽器不兼容
標(biāo)簽: