ECMAScript6 Set和Map數據結構

1.Set ——(1數組去重的另一種方法:Array.from(new Set(array)),

                 2Set可以很容易實現並集,交集和差集

Set方法能夠去重

Set的操作方法有:add(),delete(),has(),clear()

Set轉爲數組:Array.from()

Set的四個遍歷方法:keys(),values(),entries(),forEach()

前兩個用法相同,第三個方法返回的是鍵值對的遍歷器,Set結構鍵名和鍵值是同一個值,forEach()方法參數依次爲鍵值,鍵名,集合本身。

E.g: let set = new Set([‘red’,’green’,’blue’]);for(let i of set.values()) {console.log(i);}

//red,green,blue依次出現,可以省略values()方法,因爲是默認方法

遍歷的應用 擴展運算符(...)和Set結構相結合,數組去重 [...new Set(array)]

           數組的mapfilter也可用於Setset = new Set([...set].map(x => x*2))

 

2.WeakSet——成員只能是對象,不能是其他類型的值;垃圾回收機制不考慮WeakSet中的對象,因此不可遍歷,可防內存泄露。有add(),has(),delete()三個方法。

 

3.Map——鍵值對的數據結構 set(),get()方法; 解決同名屬性碰撞的問題

E.g: let map = new map(); map.set(1,’aaa’);map.get(1) //’aaa’

值得注意的是:只有對同一個對象的引用,Map結構纔將其視爲同一個鍵:

var map= new Map();

map.set(['a'], 555);

map.get(['a']) // undefined 表面上是針對同一個鍵,實際上內存地址不一樣。

同理,同樣的值的兩個實例,在Map結構中被視爲兩個鍵。

var k1= ['a'];var k2= ['a'];

new Map().set(k1, 111).set(k2, 222);

map.get(k1) // 111   map.get(k2) // 222

Map結構的操作方法:size屬性,set(key,value)(因爲是返回Map本身,所以可以採用鏈式方法),get(key),has(),delete(),clear().

Map結構的遍歷方法:keys(),values(),entries()默認遍歷接口,forEach()

Map結構轉爲數組結構,擴展運算符[...map]/[...map.entries],可結合數組的map方法和filter方法實現遍歷和過濾。

Map與其他數據之間的轉換:

Map  => 數組: [...map]

   數組  => Mapnew Map(array)

Map  => 對象 前提:Map的鍵都是字符串

   對象  => Map

Map  => Json  JSON.stringify(),Map鍵名都是字符串,轉爲對象JsonMap鍵名有非字符串轉爲數組Json

 Json  => Map  JSON.parse(),正常情況下,所有鍵名都是字符串,有一種特殊情況,整個Json是一個數組,每個數組的成員本身又是一個有兩個成員的數組

 

4.WeakMap 只接受對象作爲鍵名,null除外,鍵名指向的對象不計入垃圾回收機制,可防內存泄露。只有四個方法:get(),set(),has(),delete().另一個用處是部署私有屬性。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章