1. 程式人生 > >Set&Map區別Array

Set&Map區別Array

 

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方法: