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

首頁(yè) > 開(kāi)發(fā) > JS > 正文

ES6新數(shù)據(jù)結(jié)構(gòu)Set與WeakSet用法分析

2024-05-06 16:36:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了ES6新數(shù)據(jù)結(jié)構(gòu)Set與WeakSet用法。分享給大家供大家參考,具體如下:

新數(shù)據(jù)結(jié)構(gòu)Set與WeakSet

1. Set

Set類(lèi)似于數(shù)據(jù),但是成員值都是唯一的。生成Set的方式如下。

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

沒(méi)有重復(fù)值喲,如果面試官再讓你編寫(xiě)數(shù)組去重的函數(shù)是不是簡(jiǎn)單多了。或者你可以這樣寫(xiě)。

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

其實(shí),Set作為構(gòu)造函數(shù)使用時(shí),接受的參數(shù)不僅可以是數(shù)組,任何類(lèi)數(shù)組的對(duì)象也可以。Set的成員可以是對(duì)象,只是每個(gè)對(duì)象唯一。

那么,我們?nèi)绾尾倏vSet呢。

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

map與filter方法可以作用于數(shù)組,也可以用于Set(見(jiàn)第一個(gè)代碼塊)。

那么,我們?nèi)绾伪闅vSet呢。

依然是 keys() , values() , entries() , forEach() . 舉例如下(默認(rèn)情況下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 );

可以使用...擴(kuò)展操作符把Set轉(zhuǎn)換成數(shù)組。

2.WeakSet

WeakSet與Set類(lèi)似,也是不重復(fù)的集合。區(qū)別在于:WeakSet的成員只能是對(duì)象;WeakSet中的對(duì)象是弱引用,即垃圾回收機(jī)制不考慮WeakSet對(duì)該對(duì)象的引用。當(dāng)其他變量不再引用某對(duì)象,其將被垃圾回收機(jī)制回收,哪怕這個(gè)對(duì)象被WeakSet引用。這意味著,WeakSet的成員是無(wú)法被引用的,無(wú)法遍歷WeakSet。WeakSet只有add、delete和has三個(gè)方法。注意:WeakSet沒(méi)有size屬性,也沒(méi)有forEach方法。

對(duì)于WeakSet不能被遍歷,可以這樣解釋。因?yàn)槠涑蓡T都是弱引用,隨時(shí)可能消失,遍歷機(jī)制無(wú)法保證其成員一直存在。

那你可能問(wèn),WeakSet用來(lái)做什么,答,儲(chǔ)存DOM節(jié)點(diǎn),這樣移除DOM時(shí)就可以不用擔(dān)心內(nèi)存泄漏了。

希望本文所述對(duì)大家ECMAscript程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 赤峰市| 瓮安县| 新沂市| 漳平市| 延庆县| 仙游县| 湘潭市| 丰顺县| 集贤县| 穆棱市| 南川市| 鄂托克旗| 托克托县| 东平县| 顺平县| 湘阴县| 吉隆县| 安阳市| 昌都县| 尖扎县| 扶绥县| 兴文县| 盐源县| 历史| 延长县| 贵港市| 青冈县| 抚宁县| 霞浦县| 潍坊市| 绍兴县| 兴业县| 旌德县| 沂南县| 郁南县| 南城县| 建湖县| 漯河市| 通山县| 靖州| 金溪县|