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 結構不會添加劇復的值。

Set 函數能夠接受一個數組(或者具備 iterable 接口的其餘數據結構)做爲參數,用來初始化。數據結構

// 例一
const set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]

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

// 例三
const set = new Set(document.querySelectorAll('div'));
set.size // 56

實例屬性

  1. Set.prototype.constructor:構造函數,默認就是Set函數。
  2. Set.prototype.size:返回Set實例的成員總數。

實例方法

  1. add(value):添加某個值,返回 Set 結構自己。
  2. delete(value):刪除某個值,返回一個布爾值,表示刪除是否成功。
  3. has(value):返回一個布爾值,表示該值是否爲Set的成員。
  4. clear():清除全部成員,沒有返回值。

Set方法

  1. keys():返回鍵名的遍歷器
  2. values():返回鍵值的遍歷器
  3. entries():返回鍵值對的遍歷器
  4. forEach():使用回調函數遍歷每一個成員
Set 結構沒有鍵名,只有鍵值(或者說鍵名和鍵值是同一個值)

Map

它相似於對象,也是鍵值對的集合,可是「鍵」的範圍不限於字符串,各類類型的值(包括對象)均可以看成鍵。也就是說,Object 結構提供了「字符串—值」的對應,Map 結構提供了「值—值」的對應,是一種更完善的 Hash 結構實現。若是你須要「鍵值對」的數據結構,Map 比 Object 更合適。函數

實例屬性

  1. Map.prototype.size:返回Map 結構的成員總數。

實例方法

  1. set(key, value)

set方法設置鍵名key對應的鍵值爲value,而後返回整個 Map 結構。若是key已經有值,則鍵值會被更新,不然就新生成該鍵。prototype

const m = new Map();

m.set('edition', 6)        // 鍵是字符串
m.set(262, 'standard')     // 鍵是數值
m.set(undefined, 'nah')    // 鍵是 undefined

set方法返回的是當前的Map對象,所以能夠採用鏈式寫法。code

let map = new Map()
  .set(1, 'a')
  .set(2, 'b')
  .set(3, 'c');
  1. get(key)
  2. has(key)
  3. delete(key)
  4. clear()

Map方法

  1. keys():返回鍵名的遍歷器。
  2. values():返回鍵值的遍歷器。
  3. entries():返回全部成員的遍歷器。
  4. forEach():遍歷 Map 的全部成員
相關文章
相關標籤/搜索