Set&Map區別Array
阿新 • • 發佈:2018-12-26
Set&Map區別Array
在Set內部,兩個NaN
是相等。兩個物件總是不相等的。可以用length來檢測
四個操作方法:
add(value)
:新增某個值,返回Set結構本身。
delete(value)
:刪除某個值,返回一個布林值,表示刪除是否成功。
has(value)
:返回一個布林值,表示該值是否為Set
的成員。
clear()
:清除所有成員,沒有返回值set內部的元素可以遍歷for...of...
WeakSet和Set的區別:
WeakSet的成員只能是物件,而不能是其他型別的值
WeakSet中的物件都是弱引用,即垃圾回收機制不考慮WeakSet對該物件的引用,也就是說,如果其他物件都不再引用該物件,那麼垃圾回收機制會自動回收該物件所佔用的記憶體,不考慮該物件還存在於WeakSet之中。這個特點意味著,無法引用WeakSet的成員,因此WeakSet是不可遍歷的。
Array可以使用下標,Map和Set不能使用下標,ES6引入了iterable型別,Array,Map,Set都屬於iterable型別,它們可以使用for...of迴圈來遍歷:
【 for...of 與 for...in 的區別 】
for ... in迴圈由於歷史遺留問題,它遍歷的實際上是物件的屬性名稱。一個Array陣列實際上也是一個物件,它的每個元素的索引被視為一個屬性。當手動給Array物件添加了額外的屬性後,for ... in 迴圈將帶來意想不到的意外效果
更好的方式:iterable內建的forEach方法: