這篇文章給大家分享的是有關ES6中數組去重的方法的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
ES6中數組去重的兩種方式
方法一:
function unique(arr) {
const res = new Map();
return arr.filter((a) => !res.has(a) && res.set(a, 1))
}就這么短,就可以了,我們來解釋一下為什么。
Map對象
Map是ES6 提供的新的數據結構。
Map 對象保存鍵值對。任何值(對象或者原始值) 都可以作為一個鍵或一個值。
下表列出了 Map 對象的方法。
| 方法 | 描述 |
|---|---|
| clear | 刪除所有的鍵/值對,沒有返回值。 |
| delete | 刪除某個鍵,返回true。如果刪除失敗,返回false。 |
| forEach | 對每個元素執行指定操作。 |
| get | 返回Map對象key相對應的value值。 |
| has | 返回一個布爾值,表示某個鍵是否在當前 Map 對象之中。 |
| set | 給Map對象設置key/value 鍵/值對。 |
Map對象還有一個size屬性,他返回Map對象的鍵/值對的數量。
數組的 filter() 方法
filter() 方法創建一個新的數組,新數組中的元素 是 通過檢查 指定數組 中 符合條件的所有元素。
語法:
array.filter(function(currentValue,index,arr), thisValue)
參數說明:

箭頭函數
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、箭頭函數寫代碼擁有更加簡潔的語法;
2、不會綁定this。
了解更多,點這里
方法一 分析
function unique(arr) {
//定義常量 res,值為一個Map對象實例
const res = new Map();
//返回arr數組過濾后的結果,結果為一個數組
//過濾條件是,如果res中沒有某個鍵,就設置這個鍵的值為1
return arr.filter((a) => !res.has(a) && res.set(a, 1))
}方法二:
function unique(arr) {
return Array.from(new Set(arr))
}這個方法的代碼量更少,簡直不可思議。
數組的 from方法
Array.from() 方法從一個類似數組或可迭代的對象(包括 Array,Map,Set,String,TypedArray,arguments 對象等等) 中創建一個新的數組實例
語法:
Array.from(arrayLike[, mapFn[, thisArg]])
| 參數 | 描述 |
|---|---|
| arrayLike | 必需,想要轉換成真實數組的類數組對象或可迭代的對象。 |
| mapFn | 可選,如果指定了該參數,則最后生成的數組會經過該函數的加工處理后再返回。 |
| thisArg | 可選,執行 mapFn 函數時 this 的值。 |
示例代碼:
const bar = ["a", "b", "c"];
Array.from(bar);
// ["a", "b", "c"]
Array.from('foo');
// ["f", "o", "o"]Set對象
Set 對象允許你存儲任何類型的 唯一值 ,無論是原始值或者是對象引用。
Set對象是值的集合,你可以按照插入的順序迭代它的元素。
Set中的元素只會出現一次,即 Set 中的元素是唯一的。
語法:
new Set([iterable]);
參數:
iterable,如果傳遞一個可迭代對象(包括 Array,Map,Set,String,TypedArray,arguments 對象等等),它的所有元素將被添加到新的 Set中。如果不指定此參數或其值為null,則新的 Set為空。
下表列出了 Set 對象的方法。
| 方法 | 描述 |
|---|---|
| add | 添加某個值,返回Set對象本身。 |
| clear | 刪除所有的鍵/值對,沒有返回值。 |
| delete | 刪除某個鍵,返回true。如果刪除失敗,返回false。 |
| forEach | 對每個元素執行指定操作。 |
| has | 返回一個布爾值,表示某個鍵是否在當前 Set 對象之中。 |
Set對象和Map對象一樣,都有一個size屬性,他返回Set對象的值的個數。
方法二 分析
function unique(arr) {
//通過Set對象,對數組去重,結果又返回一個Set對象
//通過from方法,將Set對象轉為數組
return Array.from(new Set(arr))
}這次說的兩個方法,真的很簡單,主要就是靠ES6里的新東西,難度不大,代碼簡單,主要就是多用用就好了。
經人提醒,再補充一種,[...new Set(arr)]

不懂 ... 的朋友,可以看這里 js擴展運算符
感謝各位的閱讀!關于ES6中數組去重的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。