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

首頁 > 編程 > JavaScript > 正文

ES6新數據結構Set與WeakSet用法分析

2019-11-19 16:58:07
字體:
來源:轉載
供稿:網友

本文實例講述了ES6新數據結構Set與WeakSet用法。分享給大家供大家參考,具體如下:

新數據結構Set與WeakSet

1. Set

Set類似于數據,但是成員值都是唯一的。生成Set的方式如下。

var s = new Set();[1,1,3,3,5,5].map( x => s.add(x) );console.log(s); //Set {1, 3, 5}

沒有重復值喲,如果面試官再讓你編寫數組去重的函數是不是簡單多了。或者你可以這樣寫。

var set = new Set( [2,2,4,4,6,6] ); //Set {2, 4, 6}console.log(set);

其實,Set作為構造函數使用時,接受的參數不僅可以是數組,任何類數組的對象也可以。Set的成員可以是對象,只是每個對象唯一。

那么,我們如何操縱Set呢。

s.add(val); //為s添加val,返回ss.delete(val); //刪除val,返回表示成功與否的布爾值s.has(val); //返回表示s是否擁有成員val的布爾值s.clear(); //清除所有成員

map與filter方法可以作用于數組,也可以用于Set(見第一個代碼塊)。

那么,我們如何遍歷Set呢。

依然是 keys() , values() , entries() , forEach() . 舉例如下(默認情況下Set的鍵與值相同):

var s = new Set();var ul = document.getElementsByTagName('ul');[1,1,3,3,5,5].map( x => s.add(x) );for ( let key of s.keys() ){  console.log(key); //1 , 3, 5}for ( let val of s.values() ){  console.log(val); //1, 3,5}for ( let item of s.entries() ){  console.log(item[0],item[1]); // 1 1 , 3 3, 5 5}for ( let [key,val] of s.entries() ){  console.log(key,val); // 1 1 , 3 3, 5 5}s.forEach( function( val , key , ul ){  console.log( this ); //ul  console.log( val , key);} , ul );

可以使用...擴展操作符把Set轉換成數組。

2.WeakSet

WeakSet與Set類似,也是不重復的集合。區別在于:WeakSet的成員只能是對象;WeakSet中的對象是弱引用,即垃圾回收機制不考慮WeakSet對該對象的引用。當其他變量不再引用某對象,其將被垃圾回收機制回收,哪怕這個對象被WeakSet引用。這意味著,WeakSet的成員是無法被引用的,無法遍歷WeakSet。WeakSet只有add、delete和has三個方法。注意:WeakSet沒有size屬性,也沒有forEach方法。

對于WeakSet不能被遍歷,可以這樣解釋。因為其成員都是弱引用,隨時可能消失,遍歷機制無法保證其成員一直存在。

那你可能問,WeakSet用來做什么,答,儲存DOM節點,這樣移除DOM時就可以不用擔心內存泄漏了。

希望本文所述對大家ECMAScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沂水县| 色达县| 玉门市| 盐边县| 将乐县| 汉川市| 神木县| 平潭县| 恭城| 临江市| 罗定市| 辉南县| 汪清县| 福安市| 柘城县| 金寨县| 黑水县| 新竹县| 柘荣县| 岚皋县| 阳新县| 黑龙江省| 竹北市| 呼和浩特市| 虎林市| 集安市| 洪湖市| 潼关县| 吴江市| 年辖:市辖区| 溆浦县| 蒲城县| 上犹县| 瑞安市| 永兴县| 锡林浩特市| 全南县| 仁化县| 山丹县| 崇礼县| 清流县|