一、Set集合
Set類型是一種有序列表舅巷,其中包含了一些相互獨(dú)立的非重復(fù)值,可以快速訪問其中的數(shù)據(jù)河咽,更有效的追蹤各種離散值。
1赋元、創(chuàng)建Set集合并添加元素
創(chuàng)建并添加相關(guān)元素的代碼如下:
2忘蟹、has()飒房,delete(),clear()方法
has()方法判斷Set集合是否存在某個(gè)值媚值。
delete()方法刪除Set集合中的某一個(gè)元素狠毯。
clear()方法移除集合中的所有元素。
3褥芒、Set集合的forEach()方法
代碼如下:
forEach回調(diào)中如果要使用this嚼松,就需要把this傳入進(jìn)去,但如果使用箭頭函數(shù)則無需傳入锰扶,如下面的代碼:
4献酗、將Set集合轉(zhuǎn)換成數(shù)組
代碼如下:
5、Weak Set集合
用Set集合保存的變量和對象坷牛,即使初始對象被回收或者釋放罕偎,但是Set集合中一樣存在,例如下面的代碼:
所以有時(shí)候京闰,當(dāng)我們把原始引用清楚的時(shí)候颜及,也希望Set集合也會被垃圾回收機(jī)制回收掉。這個(gè)時(shí)候就可以使用Weak Set集合蹂楣,當(dāng)原始引用被設(shè)置成null俏站,清除的時(shí)候,Weak Set集合就會被垃圾回收機(jī)制也回收掉痊土。
Weak Set初始化和Set是一樣肄扎,支持add(),has()施戴,delete()方法反浓。但是有幾點(diǎn)要注意:
*Weak Set集合不支持傳入非對象參數(shù),會報(bào)錯(cuò)赞哗。
*Weak Set集合不可迭代忱辅,所以不能用for-of循環(huán)。
*Weak Set集合不暴露任何迭代器趋距。
*Weak Set集合不支持forEach()方法呜袁。
*Weak Set集合不支持size屬性。
所以當(dāng)你只需要跟蹤對象引用藤乙,你更應(yīng)該使用Weak Set集合而不是普通的Set集合猜揪。
二、Map集合
Map是一種存儲許多鍵值對的有序列表坛梁,其中的鍵名和對應(yīng)的值支持所有的數(shù)據(jù)類型而姐。所以當(dāng)鍵名分別為5和"5"時(shí),這是一個(gè)兩個(gè)獨(dú)立的鍵划咐。并不會像對象一樣拴念,強(qiáng)制轉(zhuǎn)化成字符串钧萍。
1、初始化和添加
2政鼠、支持的方法
has(key) ?檢測指定的鍵名在Map集合中是否已經(jīng)存在风瘦。
delete(key) ?從Map集合中移除指定鍵名以及其對應(yīng)的值。
clear() ?移除Map集合中的所有鍵值對公般。
3万搔、Map集合的初始化方法
可以傳入數(shù)組初始化,例如:
4官帘、Map集合的forEach()方法
和Set集合的forEach方法相似瞬雹,例如:
5、Weak Map集合
Weak Map集合中的鍵名必須是一個(gè)對象遏佣,如果使用非對象鍵名會報(bào)錯(cuò)挖炬。
Weak Map集合最大的用途就是保存Web頁面中的Dom元素。一些庫如果自定義一些Dom元素状婶,則可以使用Weak Map集合來保存意敛。
支持的方法:has(),delete()膛虫,clear()