国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

ECMAScript6中Set/WeakSet詳解

2019-11-20 12:16:47
字體:
來源:轉載
供稿:網友

ES6里加入了一個新數據解構Set,和Java的Set一樣,它里面不存放重復的元素。Set實現為一個類,使用時需要先new。

var s1 = new Set()s1.add(1)s1.add(2)s1.add(3)s1.add(1) var s2 = new Set()s2.add('a')s2.add('a') // 輸出1,2, 3for (var i of s1 ) {  console.log(i)}// 輸出afor (var i of s2 ) {  console.log(i)}

上面用Set的add方法添加元素,重復添加的,不會存進去。

Set構造器還可以接受數組作為參數傳入

var s3 = new Set([1,2,3,1])s3.size // 3

可以看到重復的數字1依然沒有放進去,另外取Set的長度使用size,不是length。

需要注意的是對于{}或[],它們是兩個同的對象

var s4 = new Set()s4.add({})s4.add({})s4.size // 2

一、遍歷Set (for of)

var s1 = new Set()s1.add(1)s1.add(2)s1.add(3) // 輸出1,2, 3for (var i of s1) {  console.log(i)}

二、把Set轉成數組

var s1 = new Set()s1.add(1)s1.add(2) // toArrayvar a1 = Array.from(s1)Array.isArray(a1) // true // orvar a1 = [...new Set(s1)] 

三、利用Set給數組去重

function distinct(arr) {  return Array.from(new Set(arr))// return [...new Set(arr)]}

Set的屬性

constructor
size
Set的方法

has(val) 判斷是否存在該元素
add(val) 添加元素
delete(val) 刪除元素
clear 刪除所有元素
keys
values
entries
forEach 遍歷元素
map
filter

四、WeakSet

WeakSet和Set一樣都不存儲重復的元素,但有一些不同點

1. 只存儲對象類型元素

ws = new WeakSet()ws.add(1)

FF下報錯如下

2. 只有add/delete/clear/has三個方法,不能遍歷,沒有size屬性等

ws = new WeakSet()ws.size // undefinedws.forEach // undefined

MDN的解釋

WeakSet 對象中存儲的對象值都是被弱引用的, 如果沒有其他的變量或屬性引用這個對象值, 則這個對象值會被當成垃圾回收掉. 正因為這樣, WeakSet 對象是無法被枚舉的, 沒有辦法拿到它包含的所有元素

WeakSet主要用來儲存DOM節點,當這些節點從文檔移除時,不會引發內存泄漏。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲阳县| 鹰潭市| 临潭县| 乐平市| 柏乡县| 福建省| 南和县| 凤台县| 恭城| 合江县| 洪雅县| 昌邑市| 通山县| 浮梁县| 仁布县| 虞城县| 乌拉特后旗| 嘉善县| 将乐县| 阳曲县| 南漳县| 襄汾县| 沭阳县| 霍州市| 通州区| 阿鲁科尔沁旗| 大姚县| 行唐县| 大丰市| 滦平县| 阿拉善右旗| 涞源县| 常宁市| 吴旗县| 沂源县| 汕尾市| 博野县| 昌邑市| 株洲县| 绥宁县| 将乐县|