ES6 set和map的理解

 

Map和Set都叫做集合,但是他們也有所不同。Set常被用來檢查對象中是否存在某個鍵名,Map集合常被用來獲取已存的信息。

 

set:

**forEach操作Set:**Set本身沒有key,而forEach方法中的key被設置成了元素本身。

Set和數組太像了,Set集合的特點是沒有key,沒有下標,只有size和原型以及一個可迭代的不重複元素的類數組。既然這樣,我們就可以把一個Set集合轉換成數組,也可以把數組轉換成Set。

Weak Set集合

Set集合本身是強引用,只要new Set()實例化的引用存在,就不釋放內存,這樣一刀切肯定不好啊,比如你定義了一個DOM元素的Set集合,然後在某個js中引用了該實例,但是當頁面關閉或者跳轉時,你希望該引用應立即釋放內存,Set不聽話,那好,你還可以使用 Weak Set

 

map:

如果說Set像數組,那麼Map更像對象。而對象中的key只支持字符串,Map更加強大,支持所有數據類型,不管是數字、字符串、Symbol等。

對比Set集合的原型,Map集合的原型多了set()和get()方法,注意set()和Set集合不是一個東西。Map沒有add,使用set()添加key,value,在Set集合中,使用add()添加value,沒有key。

Weak Map集合

和Set要解決的問題一樣,希望不再引用Map的時候自動觸發垃圾回收機制。那麼,你就需要Weak Map。

總結:

Set集合可以用來過濾數組中重複的元素,只能通過has方法檢測指定的值是否存在,或者是通過forEach處理每個值。

Weak Set集合存放對象的弱引用,當該對象的其他強引用被清除時,集合中的弱引用也會自動被垃圾回收機制回收,追蹤成組的對象是該集合最好的使用方式。

Map集合通過set()添加鍵值對,通過get()獲取鍵值,各種方法的使用查看文章教程,你可以把它看成是比Object更加強大的對象。

Weak Map集合只支持對象類型的key,所有key都是弱引用,當該對象的其他強引用被清除時,集合中的弱引用也會自動被垃圾回收機制回收,爲那些實際使用與生命週期管理分離的對象添加額外信息是非常適合的使用方式。

發佈了75 篇原創文章 · 獲贊 28 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章