JavaScript幾種數(shù)組去重方法

學習了ES6之后,接觸了2種更為簡潔的方法

方法一:

functionunique1(arr) {

//定義常量 res,值為一個Map對象實例

constres=newMap();

//返回arr數(shù)組過濾后的結果,結果為一個數(shù)組

//過濾條件是,如果res中沒有某個鍵,就設置這個鍵的值為1

returnarr.filter((a) => !res.has(a) &&res.set(a,1))

}

這個方法主要是利用了ES6的Map數(shù)據(jù)結構的特性和數(shù)組的filter()方法。

方法二:

functionunique2(arr) {

//通過Set對象,對數(shù)組去重,結果又返回一個Set對象

//通過from方法,將Set對象轉(zhuǎn)為數(shù)組

returnArray.from(newSet(arr));

}

這個方法主要是利用了ES6的Set數(shù)據(jù)結構和數(shù)組的from()方法。

甚至還可以這么寫......

...new Set(array)

這些都是ES6的新特性帶來的簡潔。

還有一種是利用includes()方法實現(xiàn):

方法三:

functionunique3(arr) {

letnewarr= [];

for(leti=0;i

if(!newarr.includes(arr[i])){

newarr.push(arr[i]);

}

}

returnnewarr;

}

很好懂,不作解釋。

利用json實現(xiàn)數(shù)組去重

方法四:

Array.prototype.unique=function() {

letkey= {};? ?//利用json鍵值唯一的原理實現(xiàn)去重

letnewarr= [];??//存放新的不重復的數(shù)組

letlen=this.length;? ?//記錄重復數(shù)組的長度,提升性能

for(leti=0;i

lett=this[i];

if(key[t] ||t===undefined)continue;? ?

? ? ? ? ? ?//json的鍵值不重復,唯一

????????????假如 key[1]存在的話,也就說明,1已經(jīng)存在不重復的數(shù)組中了。

????????????如果key里面存在的話跳出本次循環(huán)

key[t] =t;

? ? ? ?//給key賦值,賦值后,下次if判斷的時候就會跳過,就不會再賦值,這就實現(xiàn)了去重。

? ? ? ?只有key里面不存在的時候才會添加到新的數(shù)組中。

newarr.push(t);

}

returnnewarr;

};

當然還有很多方法,歡迎討論。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容