您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)ES6中數(shù)組去重的方法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。
ES6中數(shù)組去重的兩種方式
方法一:
function unique(arr) { const res = new Map(); return arr.filter((a) => !res.has(a) && res.set(a, 1)) }
就這么短,就可以了,我們來解釋一下為什么。
Map對(duì)象
Map是ES6 提供的新的數(shù)據(jù)結(jié)構(gòu)。
Map 對(duì)象保存鍵值對(duì)。任何值(對(duì)象或者原始值) 都可以作為一個(gè)鍵或一個(gè)值。
下表列出了 Map 對(duì)象的方法。
方法 | 描述 |
---|---|
clear | 刪除所有的鍵/值對(duì),沒有返回值。 |
delete | 刪除某個(gè)鍵,返回true。如果刪除失敗,返回false。 |
forEach | 對(duì)每個(gè)元素執(zhí)行指定操作。 |
get | 返回Map對(duì)象key相對(duì)應(yīng)的value值。 |
has | 返回一個(gè)布爾值,表示某個(gè)鍵是否在當(dāng)前 Map 對(duì)象之中。 |
set | 給Map對(duì)象設(shè)置key/value 鍵/值對(duì)。 |
Map對(duì)象還有一個(gè)size屬性,他返回Map對(duì)象的鍵/值對(duì)的數(shù)量。
數(shù)組的 filter() 方法
filter() 方法創(chuàng)建一個(gè)新的數(shù)組,新數(shù)組中的元素 是 通過檢查 指定數(shù)組 中 符合條件的所有元素。
語法:
array.filter(function(currentValue,index,arr), thisValue)
參數(shù)說明:
箭頭函數(shù)
return arr.filter((a) => !res.has(a) && res.set(a, 1)) //上面的代碼可以改成這樣 return arr.filter(function(a){ return !res.has(a) && res.set(a, 1); });
1、箭頭函數(shù)寫代碼擁有更加簡(jiǎn)潔的語法;
2、不會(huì)綁定this。
了解更多,點(diǎn)這里
方法一 分析
function unique(arr) { //定義常量 res,值為一個(gè)Map對(duì)象實(shí)例 const res = new Map(); //返回arr數(shù)組過濾后的結(jié)果,結(jié)果為一個(gè)數(shù)組 //過濾條件是,如果res中沒有某個(gè)鍵,就設(shè)置這個(gè)鍵的值為1 return arr.filter((a) => !res.has(a) && res.set(a, 1)) }
方法二:
function unique(arr) { return Array.from(new Set(arr)) }
這個(gè)方法的代碼量更少,簡(jiǎn)直不可思議。
數(shù)組的 from方法
Array.from() 方法從一個(gè)類似數(shù)組或可迭代的對(duì)象(包括 Array,Map,Set,String,TypedArray,arguments 對(duì)象等等) 中創(chuàng)建一個(gè)新的數(shù)組實(shí)例
語法:
Array.from(arrayLike[, mapFn[, thisArg]])
參數(shù) | 描述 |
---|---|
arrayLike | 必需,想要轉(zhuǎn)換成真實(shí)數(shù)組的類數(shù)組對(duì)象或可迭代的對(duì)象。 |
mapFn | 可選,如果指定了該參數(shù),則最后生成的數(shù)組會(huì)經(jīng)過該函數(shù)的加工處理后再返回。 |
thisArg | 可選,執(zhí)行 mapFn 函數(shù)時(shí) this 的值。 |
示例代碼:
const bar = ["a", "b", "c"]; Array.from(bar); // ["a", "b", "c"] Array.from('foo'); // ["f", "o", "o"]
Set對(duì)象
Set 對(duì)象允許你存儲(chǔ)任何類型的 唯一值 ,無論是原始值或者是對(duì)象引用。
Set對(duì)象是值的集合,你可以按照插入的順序迭代它的元素。
Set中的元素只會(huì)出現(xiàn)一次,即 Set 中的元素是唯一的。
語法:
new Set([iterable]);
參數(shù):
iterable,如果傳遞一個(gè)可迭代對(duì)象(包括 Array,Map,Set,String,TypedArray,arguments 對(duì)象等等),它的所有元素將被添加到新的 Set中。如果不指定此參數(shù)或其值為null,則新的 Set為空。
下表列出了 Set 對(duì)象的方法。
方法 | 描述 |
---|---|
add | 添加某個(gè)值,返回Set對(duì)象本身。 |
clear | 刪除所有的鍵/值對(duì),沒有返回值。 |
delete | 刪除某個(gè)鍵,返回true。如果刪除失敗,返回false。 |
forEach | 對(duì)每個(gè)元素執(zhí)行指定操作。 |
has | 返回一個(gè)布爾值,表示某個(gè)鍵是否在當(dāng)前 Set 對(duì)象之中。 |
Set對(duì)象和Map對(duì)象一樣,都有一個(gè)size屬性,他返回Set對(duì)象的值的個(gè)數(shù)。
方法二 分析
function unique(arr) { //通過Set對(duì)象,對(duì)數(shù)組去重,結(jié)果又返回一個(gè)Set對(duì)象 //通過from方法,將Set對(duì)象轉(zhuǎn)為數(shù)組 return Array.from(new Set(arr)) }
這次說的兩個(gè)方法,真的很簡(jiǎn)單,主要就是靠ES6里的新東西,難度不大,代碼簡(jiǎn)單,主要就是多用用就好了。
經(jīng)人提醒,再補(bǔ)充一種,[...new Set(arr)]
不懂 ...
的朋友,可以看這里 js擴(kuò)展運(yùn)算符
感謝各位的閱讀!關(guān)于ES6中數(shù)組去重的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。