1. 程式人生 > >ES6之Set與Map加深理解

ES6之Set與Map加深理解

ash 就是 內存 ont 使用 函數的參數 ble 兩個 綁定

Set

類似於數組,但是成員的值都是唯一的,沒有重復的值,有序

Set函數可以接受一個數組(或者具有 iterable 接口的其他數據結構)作為參數,用來初始化。

用途

數組去重:

[...new Set(array)]
或
Array.from(new Set(array));

字符串去重:

[...new Set('ababbc')].join('')
// "abc"

Map

“鍵”的範圍不限於字符串,各種類型的值(包括對象)都可以當作鍵

任何具有 Iterator 接口、且每個成員都是一個雙元素的數組的數據結構(詳見《Iterator》一章)都可以當作Map構造函數的參數

只有對同一個對象的引用,Map 結構才將其視為同一個鍵。這一點要非常小心。

Map 的鍵實際上是跟內存地址綁定的,只要內存地址不一樣,就視為兩個鍵。這就解決了同名屬性碰撞(clash)的問題,我們擴展別人的庫的時候,如果使用對象作為鍵名,就不用擔心自己的屬性與原作者的屬性同名。

Map 的遍歷順序就是插入順序,對象無序

ES6之Set與Map加深理解