精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

ES6 新增數據結構,太強了,值得學習

開發 前端
今天給大家介紹下 ES6 中的 Map、WeakMap、set 和 WeakSet 的詳細使用,以及它們的區別!

大家好,我是前端人,每日分享前端相關內容!

今天給大家介紹下 ES6 中的 Map、WeakMap、set 和 WeakSet 的詳細使用,以及它們的區別!

本篇文章知識點總結如下:

一、Set

ES6 中提供新的數據結構 Set 集合,它類似于數組,但成員的值都是唯一的,集合類似于高中所學的集合,概念是一致的。集合實現了 iterator 接口,所以他可以使用擴展運算符進行展開,也可以使用 for...of 進行遍歷。

set 使用:

let s = new Set([ '年終獎是大事', '放假是好事', '放假是好事' ]);
console.log( s ) // set(2) { '年終獎是大事', '放假是好事' }
console.log( typeof s ) // object

new Set 返回的數據是一個對象,它是自動去掉重復項。

集合的屬性和方法分別有:

  • size :返回集合元素的個數
  • add :增加一個新元素
  • delete:刪除某個元素,返回布爾值
  • has :檢測集合中是否包含某元素
  • clear:清空集合

Set 的常見應用:

數組去重:

let arr = [ 1,2,3,4,3,2,1 ]
let res = [ ...new Set(arr) ]
console.log( res ) //[1, 2, 3, 4]

取兩個集合的交集

let arr1 = [ 1,2,3,4,3,2,1 ]
let arr2 = [ 1,2 ]
let res = [...new Set(arr1)].filter( item=>new Set(arr2).has(item) )
console.log( res ) //[1, 2]

取兩個集合的并集

let arr1 = [ 1,2,3,4,3,2,1 ]
let arr2 = [ 1,2 ]
let res =[ ...new Set([...arr1, ...arr2]) ]
console.log(res ) //[ 1, 2, 3, 4 ]

取差集

let arr1 = [ 1,2,3,4,3,2,1 ]
let arr2 = [ 1,2 ]
let res = [...new Set(arr1)].filter( item=>!new Set(arr2).has(item) )
console.log( res ) //[ 3, 4 ]

Set 數據遍歷:

let s1 = new Set()
s1.add("碧根果")
s1.add("夏威夷果")
for(let v of s1){
console.log("v",v)
}
/*
v 碧根果
v 夏威夷果
*/

Set 遍歷的方式有很多,我只介紹 for...of ,剩余的可自行查找!

二、Map

ES6 提供了 Map 數據結構,它類似于對象,也是鍵值對的集合,但是鍵的范圍不限于字符串,各種類型的值(包括對象)都可以當做鍵,Map 也實現了 iterator 接口,所以也可以使用 for...of 進行遍歷,使用擴展運算符展開數據。

Map 的使用:

let m= new Map()
m.set( "name", "我是前端人" )
let key = {
job: "前端工程師"
}
m.set( key, [ "運營", "設計" ] )
console.log(m)

運行結果如圖:

集合的屬性和方法:

  • size :返回集合元素的個數
  • set:給 Map 添加鍵值對。
  • get:從 Map 中提取值。
  • delete:刪除某個元素,返回布爾值
  • has :檢測集合中是否包含某元素
  • clear:清空集合

Map 的遍歷

let map = new Map([['title','hello world'],['year','2022']]);
map.forEach((value,key,ownerMap)=>{
console.log(value);
console.log(key);
});

hello world
title
2022
year

Map 的應用

假設有一個場景,我們需要存儲 DOM 節點的屬性以及它的值,我們可能會用到 Object 或者 Map 。在這選擇 Map

const m = new Map()
const loginBtn = document.querySelector("#login")
m.set( loginBtn, { disabled: true } )

這樣應用的時候會產生一個問題:當用戶登錄之后,跑到另一個界面,登錄按鈕被移除,正常來說,這個 DOM 節點應該被垃圾回收清除,但是它被 loginBtn 變量引用,loginBtn 作為 key 被 Map 引用,所以登錄 DOM 節點會保留在內存中,白白占用空間。此時就需要引入 WeakMap 。

三、WeakMap

WeakMap 的 key 只能是 Object 實例化的對象或者派生類的對象,如果不是的話,則會報錯,WeakMap 對象的 value 值 可以是任意類型數據。

WeakMap 使用

let wm = new WeakMap()
wm.set( {},'value' )

弱鍵:WeakMap 的 key 都是對象或者派生類的對象,目的是為了讓這個 key 被弱持有。這些對象都是弱引用,不會干擾到垃圾回收。當 WeakMap 中的鍵在 WeakMap 之外不存在引用時,該鍵值對會被移除。

Map 中的實例把 Map 替換成 weakMap:

const vm = new WeakMap()
const loginBtn = document.querySelector("#login")
vm.set( loginBtn, { disabled: true } )

作為 WeakMap 對象的 key 不會被正式引用,也就是說 loginBtn 變量不被 vm 引用,這時垃圾回收器就可以把這個 loginBtn 變量和登錄DOM節點都給干掉,釋放內存空間。

WeakMap 的 key 不算正式引用,隨時可以被回收清除掉,因此 WeakMap 不提供迭代功能。對于 size 屬性和 clear 方法,由于它們需要先迭代遍歷所有的 key 才能計算得到,所以 size 和 clear 無法使用。

WeakMap 的 API 與 Map 對象基本都是一樣的,除了沒有 size 屬性和 clear 方法。

四、WeakSet

WeakSet 對于 Set 而言,就像 WeakMap 對于 Map 一樣。

在存放對象時,實際上是存放的是對象的引用,即 Set 也被稱之為 Strong Set 。如果所存儲的對象被置為 null ,但是 Set 實例仍然存在的話,對象依然無法被垃圾回收器回收,從而無法釋放內存。

let set = new WeakSet();
let key = {};
set.add(key);
console.log(set.has(key)); //true
set.delete(key);
console.log(set.has(key)); //false

注意:WeakSet 構造器不接受基本類型的數據,只接受對象。同樣的可以使用可迭代的對象或數組,來作為構造器參數,來創建 WeakSet 。

WeakSet 的 API 與 Set 對象基本都是一樣的,除了沒有 size 屬性和 clear 方法。

五、總結之間的區別

5.1、對于 WeakSet 和 Set 之間的區別:

WeakSet 沒有 size 和 clear 。

  • WeakSet 無法暴露出任何迭代器。
  • WeakSet 不可迭代,因此不能使用 for...of 遍歷
  • WeakSet 實例,弱調用了 add 方法時傳入非對象參數,會拋出異常。在 has 和 delete 方法傳入非對象的參數返回 false。

對于 WeakMap 和 Map 之間的區別與上邊 WeakSet 和 Set 的區別類似。不再贅述。

5.2、Set 與 Map 之間的共性及區別:

  • Set 和 Map 都是一種數據結構,但是 Set 是一個無重復的有序列表,類似于數組,而 Map 是有序的鍵值對集合,類似于對象。
  • 都將通過 Object.is() 方法來判斷其中的值不相等,保證 Set 和 Map 移除重復值。Set 無法隨機訪問其中的值,只能通過 has 判斷某個值是否存在。而 Map 使用 get 提取任意鍵對應的數據。
  • Map 和 Set 都可以隨意的實例中添加數據,Set 使用的是 add ,而 Map 使用的 set 方法。其他的 API 都相同。
責任編輯:姜華 來源: 今日頭條
相關推薦

2023-05-10 08:21:42

Es6Set

2021-08-16 07:05:58

ES6Promise開發語言

2021-07-30 07:10:07

ES6函數參數

2025-01-22 14:02:35

2020-10-22 10:55:55

數據結構ES6前端

2021-08-18 07:05:57

ES6Asyncawait

2025-09-01 02:00:00

2020-11-16 08:10:04

ES6迭代器JavaScript

2021-07-16 07:26:48

ES6javascript開發語言

2021-08-02 05:51:29

foreachES6數組

2022-05-30 16:31:08

CSS

2025-02-08 08:00:00

JavaDeepSeekIDEA

2021-03-04 09:31:42

開源技術 項目

2025-01-13 13:47:13

2016-08-01 16:26:34

ES6集合

2023-12-10 20:33:50

Redis搜索全文

2025-07-02 08:00:00

防抖SpringBoot開發

2025-04-02 04:55:00

2021-12-13 11:54:13

SetEs6接口

2022-09-08 11:12:09

ES6JavaScript
點贊
收藏

51CTO技術棧公眾號

久久久久久国产精品| 亚洲国产成人在线播放| 在线看视频不卡| 99久久婷婷国产一区二区三区| 中文字幕一区二区三区欧美日韩 | www.色欧美| 毛片网站在线看| 久久久久久9999| 亚洲一区二区三区视频播放| 免费在线不卡视频| 99精品在线| 日韩精品黄色网| 中文字幕资源在线观看| 波多野结衣亚洲| 亚洲激情欧美激情| 水蜜桃亚洲精品| 国产91免费在线观看| 美女精品自拍一二三四| 午夜精品久久久久久久99热| 特黄一区二区三区| 国产欧美高清视频在线| 亚洲第一在线视频| 国产不卡的av| 国产精品伦一区二区| 欧美性xxxxx极品娇小| 久久久无码中文字幕久...| 韩国免费在线视频| 97久久精品人人做人人爽50路| 成人免费观看a| 国产一区二区视频免费| 亚洲人成久久| 欧美人与物videos| 91n在线视频| 欧美手机在线| 亚洲天堂男人天堂| 第四色在线视频| 66精品视频在线观看| 3d动漫精品啪啪1区2区免费| 9久久婷婷国产综合精品性色 | 国产精品久久在线观看| 亚洲GV成人无码久久精品| 精品动漫一区| 国内精久久久久久久久久人| 强乱中文字幕av一区乱码| 91日韩视频| 日韩性生活视频| 97精品在线播放| 欧美大片aaaa| 日韩视频欧美视频| 国产精品视频在| 日韩88av| 久久天天躁狠狠躁夜夜av| 91ts人妖另类精品系列| 色婷婷热久久| 久久黄色av网站| 中国一级片在线观看| 亚洲xxx拳头交| 久久成人人人人精品欧| 欧美成人黄色网| 一区在线免费观看| 88国产精品欧美一区二区三区| 久久精品视频9| 亚洲国产精品一区| 51精品国产黑色丝袜高跟鞋| 中文字幕亚洲精品一区| 日日摸夜夜添夜夜添精品视频| 青青青国产精品一区二区| 天堂网免费视频| 美国十次了思思久久精品导航| 成人av番号网| 精品国产亚洲AV| 波多野洁衣一区| 欧美国产综合视频| av在线首页| 最新国产成人在线观看| 国产性生活免费视频| 女海盗2成人h版中文字幕| 在线免费观看一区| 中文字幕成人免费视频| av动漫精品一区二区| 国产丝袜一区二区| 老司机成人免费视频| 欧美另类亚洲| 日本国产欧美一区二区三区| 中文字幕+乱码+中文乱码91| 国产资源精品在线观看| 成人综合电影| 成人三级黄色免费网站| 亚洲精品自拍动漫在线| 久久久久久久久久久福利| 少妇高潮一区二区三区99| 精品国内二区三区| 第一次破处视频| 欧美久色视频| 国产精品日韩欧美大师| 高清乱码毛片入口| 国产精品久久久久影院老司| 成人免费毛片在线观看| 国产原创一区| 亚洲经典中文字幕| 免费黄色激情视频| 国产精品主播| 成人羞羞国产免费| 精品亚洲综合| 亚洲小说欧美激情另类| 国产小视频精品| 欧美在线导航| 欧美大片大片在线播放| 国产乱码77777777| 成av人片一区二区| 自拍偷拍一区二区三区| 香蕉视频亚洲一级| 精品国产乱码久久| 可以免费看av的网址| 欧美中文日韩| 国产精品久久久对白| 日本电影全部在线观看网站视频 | 黄色网页免费在线观看| 国产乱码精品一区二区三区亚洲人| 日韩国产精品亚洲а∨天堂免| 黄色香蕉视频在线观看| 青青草成人在线观看| 久久久婷婷一区二区三区不卡| 在线观看免费视频你懂的| 欧美日韩色一区| av女人的天堂| 亚洲一区日本| 国产综合色一区二区三区| 一区二区三区伦理| 欧美军同video69gay| 国产三级黄色片| 石原莉奈一区二区三区在线观看| 国产精品三区四区| 伦理av在线| 日韩欧美www| 国产十六处破外女视频| 精品一区二区三区在线观看国产 | 黄网在线观看| 色噜噜狠狠成人中文综合| 荫蒂被男人添免费视频| 欧美午夜a级限制福利片| 亚洲精品免费网站| 成人高清免费在线| 777xxx欧美| 天天看片中文字幕| 国产真实乱偷精品视频免| 一区二区三区|亚洲午夜| 欧美97人人模人人爽人人喊视频| 一个人www欧美| 中文字字幕在线中文乱码| 欧美国产成人精品| 少妇一级淫免费播放| 99国产精品免费视频观看| 91久久国产精品| 在线观看三级视频| 亚洲国产成人一区| 女人十八岁毛片| 久久这里只有精品6| 青青在线视频观看| 精品久久不卡| 成人国产亚洲精品a区天堂华泰| 日本www在线观看| 日韩欧美中文字幕一区| 国产网址在线观看| 久久香蕉国产线看观看99| 欧美黑人又粗又大又爽免费| 日韩精品影视| 成人国产1314www色视频| 女厕盗摄一区二区三区| 中文字幕精品视频| 99国产精品99| 精品美女永久免费视频| 乐播av一区二区三区| 久久国产福利国产秒拍| 欧美在线观看黄| 天堂综合网久久| 国产精品一区二区电影| 性网站在线观看| 日韩av在线直播| 91国内精品视频| 亚洲国产乱码最新视频 | 国产精品96久久久久久| 日本暖暖在线视频| 欧美精品一区二区高清在线观看| 亚洲熟女综合色一区二区三区| 国产精品白丝在线| 久久性爱视频网站| 奇米影视在线99精品| 日韩欧美视频免费在线观看| 啄木系列成人av电影| 91在线播放国产| 自拍视频在线看| 欧美成人一二三| 国产在线你懂得| 精品国产乱码久久久久久夜甘婷婷 | 毛片av免费在线观看| 97精品国产| 久久久久久九九| 一区二区三区日本视频| 欧美综合第一页| 污视频网站在线免费| 国产一区二区三区在线观看视频 | 波多野结衣作品集| 欧美日韩国产亚洲一区| 日韩亚洲一区在线播放| www.豆豆成人网.com| 国产精品入口日韩视频大尺度| 黄色在线观看视频网站| 色悠悠久久久久| 久草在线青青草| 亚洲国产精品yw在线观看 | 免费成人黄色网| 欧美与欧洲交xxxx免费观看| 亚洲淫性视频| 色妞久久福利网| 六十路在线观看| 亚洲第一区在线| 精品人妻午夜一区二区三区四区 | 亚洲午夜在线电影| 久久av红桃一区二区禁漫| 久久网站热最新地址| 亚洲色图欧美另类| 国产精品123| 91福利免费观看| 蜜臂av日日欢夜夜爽一区| 能在线观看的av| 亚洲另类视频| 欧美精品久久久久久久久久久| 欧美黄污视频| 国产日产欧美一区二区| 99视频精品全国免费| 午夜一区二区三区| 精品一区二区三| 亚洲高清不卡一区| 日韩免费一区| 中文字幕剧情在线观看一区| 日韩欧美伦理| 亚洲精品在线免费| 日韩久久精品| 影音先锋亚洲视频| 99tv成人| 免费看污污视频| 欧美日韩国产色综合一二三四| 99视频精品全部免费看| 欧美午夜久久| 成品人视频ww入口| 国产欧美日韩一区二区三区在线| 成人在线观看你懂的| a91a精品视频在线观看| 黄色一级片播放| 久久久夜精品| 天天色综合天天色| 激情亚洲综合在线| 亚洲视频在线不卡| 成人久久18免费网站麻豆| 日本少妇xxxx| 久久亚区不卡日本| 中文天堂资源在线| 亚洲女性喷水在线观看一区| 一区二区视频免费看| 亚洲激情av在线| 亚洲国产成人精品激情在线| 色哟哟在线观看一区二区三区| 亚洲精品一区二三区| 7777精品伊人久久久大香线蕉完整版 | 高清不卡日本v二区在线| 亚洲专区**| 你懂的视频在线一区二区| 欧美精品尤物在线观看| 在线播放 亚洲| 中文字幕免费精品| av在线播放亚洲| 人禽交欧美网站| 亚洲av无码成人精品区| 91蝌蚪porny九色| 91大神福利视频| 亚洲福利一区二区| 日批视频免费观看| 精品精品国产高清一毛片一天堂| 青青草视频在线免费观看| 综合欧美国产视频二区| 蜜桃传媒在线观看免费进入 | 日本熟女毛茸茸| 欧美精品久久一区| 少妇又色又爽又黄的视频| 中文字幕欧美精品日韩中文字幕| 在线观看a级片| 日本视频久久久| 欧美影院精品| 欧美亚洲丝袜| 日本精品入口免费视频| 国产黄大片在线观看| 日韩在线一区二区| 欧美日韩中字一区| 久久riav二区三区| 欧美aa免费在线| 91精品免费看| 天美av一区二区三区久久| 亚洲国产婷婷香蕉久久久久久99| 影音先锋日韩在线| 国产特级黄色大片| 免费高清在线视频一区·| 国产精品99蜜臀久久不卡二区 | 久久精品国产99国产精品澳门 | 激情av中文字幕| 国产精品无圣光一区二区| 五月天婷婷丁香| 欧美日韩国产123区| 免费观看的毛片| 美女少妇精品视频| 成人黄色免费观看| 鲁丝片一区二区三区| 欧美另类女人| 国产精品嫩草影院8vv8| 久久综合九色综合97_久久久| 麻豆chinese极品少妇| 在线一区二区观看| 色窝窝无码一区二区三区| 久久在精品线影院精品国产| 在线国产成人影院| 开心色怡人综合网站| 伊人久久婷婷| 久久综合在线观看| 91麻豆产精品久久久久久| 麻豆成人在线视频| 欧美一区二区三区在线视频| 成人网视频在线观看| 人人澡人人澡人人看欧美| 欧美18免费视频| 欧妇女乱妇女乱视频| 国内精品不卡在线| 国内毛片毛片毛片毛片毛片| 欧美亚洲高清一区| 国产在线观看精品一区| 日韩av电影在线网| 亚洲婷婷伊人| 成年人观看网站| 91美女片黄在线观看| 在线观看国产亚洲| 亚洲黄页网在线观看| 波多野结依一区| 国产一区免费| 亚洲综合不卡| 久久精品国产亚洲av久| 欧美视频一二三| 五月婷婷六月丁香综合| 2019中文字幕在线| 亚洲美女久久| 久久精品视频91| 亚洲国产精品黑人久久久| 五月天中文字幕| 最近中文字幕日韩精品 | 国产剧情av在线播放| 精品免费国产| 久久婷婷激情| 手机看片福利视频| 欧美日韩一区二区三区不卡| 麻豆传媒在线免费| wwwxx欧美| 99热精品在线观看| 亚洲精品成人无码| 欧美日韩另类一区| 国产淫片在线观看| 成人精品一二区| 国产亚洲成人一区| 少妇太紧太爽又黄又硬又爽小说| 欧美日韩国产美女| 日本孕妇大胆孕交无码| 国产午夜精品一区| 久久免费高清| 精品无码一区二区三区蜜臀| 日韩视频免费观看高清完整版在线观看 | 久久激情五月丁香伊人| 欧美专区一区| 国产97在线 | 亚洲| 国产视频视频一区| 国产麻豆免费视频| 91国产在线精品| 欧美日韩国产免费观看视频| 五月婷婷之婷婷| 亚欧色一区w666天堂| 国产黄色片在线观看| 2019国产精品视频| 久久久蜜桃一区二区人| 国产又粗又猛又爽又黄的视频小说| 日韩欧美黄色影院| 亚州一区二区三区| 波多野结衣与黑人| 日本一区二区三区在线不卡| 国产黄色高清视频| 国产v综合ⅴ日韩v欧美大片| 亚洲中无吗在线| www.久久国产| 91精品在线麻豆| www.com.cn成人| 超级碰在线观看| 国产亚洲综合色| 日韩中文字幕综合| 成人久久久久爱| 久久久亚洲人|