分四部分:Set择镇、WeakSet挡逼、Map和WeakMap。
Set:
概念:類似于數(shù)組的數(shù)據(jù)結構腻豌,成員的值都是唯一的家坎。本身是一個構造函數(shù),用來生成Set數(shù)據(jù)結構吝梅。
屬性:size乘盖。
方法:add()、delete()憔涉、has()订框、clear()。
遍歷操作:keys()兜叨、values()穿扳、entries()、forEach()国旷。
Set結構默認遍歷器生成函數(shù)就是它的values方法矛物。
小技巧:數(shù)組去重(先將數(shù)組傳入Set構造函數(shù)中,生成只有唯一值的Set結構跪但,再用擴展運算符轉為數(shù)組履羞。也可以用Array.from()將Set結構轉為數(shù)組)、
WeakSet:
概念:與Set類似屡久,也是不重復的值的集合忆首。區(qū)別是:WeakSet的成員只能是對象;WeakSet中的對象都是弱引用被环,即垃圾回收機制不考慮WeakSet對該對象的引用糙及。
可以接受數(shù)組作為參數(shù),數(shù)組的成員會自動成為WeakSet的成員筛欢。
方法:add()浸锨、delete()唇聘、has()。
Map:
概念:鍵值對的集合柱搜。與Object類似迟郎,區(qū)別是,鍵名不止是字符串聪蘸,可以是任意類型的值谎亩。
屬性:size、set宇姚、get、has夫凸、delete浑劳、clear。
方法:keys()夭拌、values()魔熏、entries()、forEach()鸽扁。
Map結構比較有意思的是蒜绽,與其他數(shù)據(jù)結構的互相轉換:
A:Map轉為數(shù)組:用擴展運算符。
B:數(shù)組轉為Map:將數(shù)組傳入Map構造函數(shù)桶现。
C:Map轉為對象:如果鍵名都是字符串躲雅,可以遍歷Map成員,指定obj[k]=v骡和。
D:對象轉為Map:遍歷對象的每個成員相赁,然后調用Map結構的set()方法。
E:Map轉為JSON:如果鍵名都是字符串慰于,Map結構先轉為Object钮科,再序列化為對象JSON。如果鍵名有非字符串婆赠,將Map用擴展運算符轉為數(shù)組绵脯,再序列化為數(shù)組JSON。
F:JSON轉為Map:如果所有鍵名都是字符串休里,先將JSON解析為Object蛆挫,再將Object轉為Map。特殊情況妙黍,數(shù)組JSON轉為Map時璃吧,將JSON解析為數(shù)組,傳入Map構造函數(shù)废境。
WeakMap:
概念:與Map結構類似畜挨,用于生成鍵值對的集合筒繁。區(qū)別是,只接受對象作為鍵名巴元;WeakMap的鍵名所指向的對象毡咏,不計入垃圾回收機制。
方法:get()逮刨、set()呕缭、has()、delete()修己。