es6 Set和Map資料結構
阿新 • • 發佈:2020-12-07
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