Map & Set

Map & Set

本篇整理自:ECMAScript 6 入門

Set

Set 數(shù)據(jù)結(jié)構(gòu),

特點(diǎn):

1.類似于數(shù)組;
2.它的值都是唯一的;
3.它的 key 與 value 是相同的,

屬性與方法:

1.size 返回 Set 實(shí)例的成員數(shù)
2.add(value) / delete(value) / has(value) 添加、刪除、判斷是否有 某個(gè)值
3.clear() 清除所有成員
4.keys() / values / entries 返回鍵名、鍵值、鍵值對 的遍歷器;keys() 與 values 得到的結(jié)果是一樣的,而entries 得到的每一個(gè)項(xiàng)大概長這樣 ["xxx", "xxx"], 相等
5.forEach(),

6.Set 沒有 map, filter,需要先轉(zhuǎn)換成為數(shù)組。

生成 Set

Set 本身是一個(gè)構(gòu)造函數(shù),使用 new Set() 可以把數(shù)據(jù)、類數(shù)組去重之后(注意,Set 認(rèn)為 NaN 等于自身),變成一個(gè) set 數(shù)據(jù)結(jié)構(gòu)

把 Set 轉(zhuǎn)成 Array

1.Array.from
2.拓展運(yùn)算符

Map

因?yàn)閭鹘y(tǒng)的對象鍵名有“字符串”的限制,Map 的出現(xiàn)就是為了解決這個(gè)問題

特點(diǎn)

1.與 Set 相比,它更類似對象;
2.Map 的鍵名可以是任何類型的值,鍵名為對象的時(shí)候,實(shí)際上是對應(yīng)內(nèi)存的地址

Object 結(jié)構(gòu)提供了“字符串—值”的對應(yīng),Map 結(jié)構(gòu)提供了“值—值”的對應(yīng),是一種更完善的 Hash 結(jié)構(gòu)實(shí)現(xiàn)。

屬性與方法

1.get(key) / set(key) / has(key) / delete(key) 讀取與設(shè)置,是否有某個(gè)鍵名,刪除
2.size() 成員總數(shù)
3.clear() 清除所有

4.keys() / values() / entries 鍵名、鍵值、鍵值對 的遍歷器;

Map 結(jié)構(gòu)的默認(rèn)遍歷器接口(Symbol.iterator屬性),就是entries方法。

5.forEach() 第一個(gè)參數(shù)(function)的參數(shù)為 value, key, Map實(shí)例

生成 Map

new Map() 可以把任何具有 Iterator 接口、且每個(gè)成員都是一個(gè)雙元素的數(shù)組的數(shù)據(jù)結(jié)構(gòu),也就是說,我們 可以把 Set 實(shí)例(注意,我們前面說了,Set 實(shí)例的鍵名與鍵值是一樣的)、Map 實(shí)例轉(zhuǎn)變?yōu)?Map

生成 Map 的方法是:

let map = new Map() // 想創(chuàng)建
map.set(1, "xxx") // 設(shè)置值

//我們也可以
let map = new Map([
    [1, "xxx"],
    [2, "yyy"]
])

// 這里面還是先創(chuàng)建 Map 實(shí)例,再逐個(gè)添加 鍵值對

let map = new Map()
map.set(1, "xxx")
map.set(2, "yyy")

注意,對于 Map 來說,0 與 -0 是一樣的,NaN 是等于自身的

Map 轉(zhuǎn)換成其它

1.生成 keys 的數(shù)組

[...map.keys()]

2.生成 values 的數(shù)組

[...map.values()]

3.生成鍵值對的數(shù)組:

[...map.entries()] // [[1,"xxx"], [2, "yyy"]]

4.直接對 Map 實(shí)例使用 ... 也可以得到 [...map.entries] 一樣的結(jié)果

5.Map 轉(zhuǎn)對象
遍歷

6.對象轉(zhuǎn) Map
遍歷 + map.set()

7.Map 轉(zhuǎn) JSON
如果想把數(shù)組轉(zhuǎn)變?yōu)?JSON 格式,必須考慮到鍵名不是字符串的情況,可以轉(zhuǎn)變?yōu)閿?shù)組 JSON。

鍵名-鍵值都符合 JSON 要求: JSON.stringify(map)
鍵名-鍵值有不符合 JSON 要求,考慮用: JSON.stringify([...map])

總結(jié)

Set 常用于數(shù)組去重;Map 是為了解決對象非字符串不能作為 key 的問題
它們的屬性方法都非常類似

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容