乾貨-es6第二版set,map複習筆記

本系列複習筆記:
乾貨-es6第二版“類型”複習筆記(持續更新…)
乾貨-es6語法風格複習筆記

繼續介紹 Set 和 Map
其實這兩種新型的數據結構也有很多的相似性,
可以參照第一篇學習類型的方式來學習。

map和set知識結構

比如兩種數據結構都有
1.遍歷的操作
2.其實例屬性和方法也有類似
3.都可以與其他類型數據進行轉換
4.都有weak-弱引用的使用方式

並且他們的區別在於:

Map是鍵值對的集合,是不是很像對象?區別於對象,Map中“鍵”的範圍可以使用各種類型的值。
所以應用更爲廣泛,可以操作更多類型的鍵值對。

Set更像數組類型,但是區別在於,Set中沒有重複的元素。
所以在應用中,我們可以嚐嚐可以使用數組轉Set再轉回數組的方式,進行去重操作。
一行代碼去重:

[...new Set([1,2,3,1,])]  // [1,2,3]

與es5的各種去重方式比較,這個方法簡便很多


接下來,我們再討論一下數據類型轉換的問題。

與數組的轉化:(使用…擴展運算)

//轉化爲數組
const myMap = new Map()
.set(true, 7)
.set({foo:3}, ['abc']);
[...myMap]

//[[true,7],[{foo:3},['abc']]
//數組轉爲Map
new Map([
[true,7],
[{foo:3},['abc']]
])

與對象的轉化:

//轉化爲對象(前提是Map鍵值都是字符串)
let obj = Object.create(null);
for (let [k,v] of strMap) {
obj[k] = v;
}
//對象轉爲Map
let strMap = new Map();
for (let k in Object.keys(obj)) {
strMap.set(k, obj[k]);
}

與Json的轉化:

//轉化爲Json,兩種情況:
JSON.stringfy(map)//1.鍵名都是字符串:
JSON.string([...map])//2.鍵名都是非字符串:
//Json轉爲Map,兩種情況

JSON.parse(j)//1.正常情況:後再用對象轉Map的方法
new Map(JSON.parse(j))//2.特殊情況,Json都是數組 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章