1. 程式人生 > 實用技巧 >es6 Set和Map資料結構

es6 Set和Map資料結構

Set基本用法

ES6 提供了新的資料結構 Set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。

Set 本身是一個建構函式,用來生成 Set資料結構。

const s = new Set();
\[2, 3, 5, 4, 5, 2, 2\].forEach(x => s.add(x));
for (let i of s) { console.log(i); } // 2 3 5 4

Set同樣可以接受物件或者陣列,遍歷操作類似Array物件

// 例二 const items = new Set(\[1, 2, 3, 4, 5, 5, 5, 5\]); items.size // 5

廣州品牌設計公司

https://www.houdianzi.com PPT模板下載大全https://redbox.wode007.com

Map基本語法

JavaScript的物件(Object),本質上是鍵值對的集合(Hash 結構),但是傳統上只能用字串當作鍵。這給它的使用帶來了很大的限制。

const data = {}; const element = document.getElementById('mydiv');
data\[element\] = 'metadata'; data\['\[object htmldivElement\]'\] // "metadata"

上面程式碼原意是將一個 DOM 節點作為物件data的鍵,但是由於物件只接受字串作為鍵名,所以element被自動轉為字串[objecthtmlDivElement]。

為了解決這個問題,ES6 提供了 Map 資料結構。它類似於物件,也是鍵值對的集合,但是“鍵”的範圍不限於字串,各種型別的值(包括物件)都可以當作鍵。也就是說,Object 結構提供了“字串—值”的對應,Map 結構提供了“值—值”的對應,是一種更完善的 Hash 結構實現。如果你需要“鍵值對”的資料結構,Map 比 Object 更合適。

const m = new Map(); const o = {p: 'Hello World'};
m.set(o, 'content') m.get(o) // "content"
m.has(o) // true m.delete(o) // true m.has(o) // false