set相似數組。其成員的值都是惟一的。 數組
數組去重code
const set = new Set([1,2,3,2,4,2,3,4]) console.log(set) [...new Set(array)] // 返回無重複的數組
Set.add(value) 爲set對象添加一個值
Set.size 返回set對象的長度
Set.delete(value) 刪除set對象中的指定的值,並返回bool結果。
Set.has(value) 檢查set對象中是否有指定的值
Set.clear() 刪除指定set對象中的全部值對象
Set.keys() 返回一個以指定set對象的key組成的類數組對象。
Set.values() 返回一個以指定set對象的value組成的類數組對象。
Set.entries() 返回一個以key和value組成的數組組成的數組。
Set.forEach(fn(value, key) {}) 對set對象進行遍歷操做。io
set對象沒有提供訪問指定值的方法。要想訪問指定值須要轉爲數組後再用數組的方法取指定值。console
let set = new Set(['a', 1, 2, 2, 2, 1, 3]) let arr = [...set] // ['a', 1, 2, 3] let index = arr.indexOf('a') // 0 console.log(arr[index]) // 'a'
由於set對象在存數據時無重複值。在取時較困難。因此石頭通常使用set對象存放對象,而後檢查是否有某個值,使用數組取數據。
set對象不能判斷對象是否相等。因此不能去重對象。 遍歷
並集引用
let union = new Set([...seta, ...setb])
交集nio
let intersect = new Set([...seta].filter(x => setb.has(x)))
差集方法
let difference = new Set([.seta].filter(x => !setb.has(x)))
WeakSet.add(obj) 爲WeakSet對象指定添加的對象。
WeakSet.delete(obj) 返回是否刪除指定的對象。
WeakSet.has(obj) 返回是否存在指定的對象。數據
如今set對象的操做方法、屬性太少。(好比:沒法準確地取出指定的值。)因此把他只作爲一個倉庫對待。操做還要在數組中操做。
它出如今數組對象沒有這些功能的時期。應該是作爲一個數組對象的補充存在。要項目中應當把set/array結合起來使用。
set對象用處少。weakset對象的用處更少。
2018/08/05 by stone