JavaScript下一版本標(biāo)準(zhǔn)ES6的Set集合使用詳解
Set如果要用一句來(lái)描述,我們可以說(shuō): ???Set??
?是一種叫做集合的數(shù)據(jù)結(jié)構(gòu)。
?什么是集合?
集合是由一堆無(wú)序的、相關(guān)聯(lián)的,且不重復(fù)的內(nèi)存結(jié)構(gòu)【數(shù)學(xué)中稱為元素】組成的組合。
??Set?
??是??es6?
?新增的數(shù)據(jù)結(jié)構(gòu),類似于數(shù)組,但是成員的值都是唯一的,沒(méi)有重復(fù)的值,我們一般稱為集合
??Set?
?本身是一個(gè)構(gòu)造函數(shù),用來(lái)生成 Set 數(shù)據(jù)結(jié)構(gòu)
const s = new Set();
增刪改查
??Set?
?的實(shí)例關(guān)于增刪改查的方法:
- add()
- delete()
- has()
- clear()
add()
添加某個(gè)值,返回 ??Set?
? 結(jié)構(gòu)本身
當(dāng)添加實(shí)例中已經(jīng)存在的元素,??set?
?不會(huì)進(jìn)行處理添加
s.add(1).add(2).add(2); // 2只被添加了一次
delete()
刪除某個(gè)值,返回一個(gè)布爾值,表示刪除是否成功
s.delete(1)
has()
返回一個(gè)布爾值,判斷該值是否為??Set?
?的成員
s.has(2)
clear()
清除所有成員,沒(méi)有返回值
s.clear()
遍歷
??Set?
?實(shí)例遍歷的方法有如下:
關(guān)于遍歷的方法,有如下:
- keys():返回鍵名的遍歷器
- values():返回鍵值的遍歷器
- entries():返回鍵值對(duì)的遍歷器
- forEach():使用回調(diào)函數(shù)遍歷每個(gè)成員
??Set?
?的遍歷順序就是插入順序
??keys?
?方法、??values?
?方法、??entries?
?方法返回的都是遍歷器對(duì)象
let set = new Set(['red', 'green', 'blue']); for (let item of set.keys()) { console.log(item); } // red // green // blue for (let item of set.values()) { console.log(item); } // red // green // blue for (let item of set.entries()) { console.log(item); } // ["red", "red"] // ["green", "green"] // ["blue", "blue"]
??forEach()?
?用于對(duì)每個(gè)成員執(zhí)行某種操作,沒(méi)有返回值,鍵值、鍵名都相等,同樣的??forEach?
?方法有第二個(gè)參數(shù),用于綁定處理函數(shù)的??this?
?
let set = new Set([1, 4, 9]); set.forEach((value, key) => console.log(key + ' : ' + value)) // 1 : 1 // 4 : 4 // 9 : 9
擴(kuò)展運(yùn)算符和??Set?
? 結(jié)構(gòu)相結(jié)合實(shí)現(xiàn)數(shù)組或字符串去重
// 數(shù)組 let arr = [3, 5, 2, 2, 5, 5]; let unique = [...new Set(arr)]; // [3, 5, 2] // 字符串 let str = "352255"; let unique = [...new Set(str)].join(""); // "352"
實(shí)現(xiàn)并集、交集、和差集
let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]); // 并集 let union = new Set([...a, ...b]); // Set {1, 2, 3, 4} // 交集 let intersect = new Set([...a].filter(x => b.has(x))); // set {2, 3} // (a 相對(duì)于 b 的)差集 let difference = new Set([...a].filter(x => !b.has(x))); // Set {1}
到此這篇關(guān)于JavaScript下一版本標(biāo)準(zhǔn)ES6的Set集合使用詳解的文章就介紹到這了,更多相關(guān)ES6的Set集合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS彈出層遮罩,隱藏背景頁(yè)面滾動(dòng)條細(xì)節(jié)優(yōu)化分析
下面小編就為大家?guī)?lái)一篇JS彈出層遮罩,隱藏背景頁(yè)面滾動(dòng)條細(xì)節(jié)優(yōu)化分析。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-04-04JS判斷來(lái)路是否是百度等搜索索引進(jìn)行彈窗或自動(dòng)跳轉(zhuǎn)的實(shí)現(xiàn)代碼
這篇文章主要介紹了JS判斷來(lái)路是否是百度等搜索索引進(jìn)行彈窗或自動(dòng)跳轉(zhuǎn)的實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10JavaScript實(shí)現(xiàn)區(qū)塊鏈
很多朋友都聽(tīng)說(shuō)過(guò)比特幣和以太幣這樣的加密貨幣,但是只有極少數(shù)人懂得隱藏在它們背后的技術(shù),接下來(lái)通過(guò)本文給大家介紹用JavaScript來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的區(qū)塊鏈來(lái)演示它們的內(nèi)部究竟是如何工作的,感興趣的朋友一起看看吧2018-03-03Javascript 頁(yè)面模板化很多人沒(méi)有使用過(guò)的方法
今天遇到一個(gè)問(wèn)題,這個(gè)問(wèn)題也是我以前遇到的問(wèn)題,以前的方式,也是大多數(shù)人使用的方式。大家可以看看我的文章2012-06-06原生JS實(shí)現(xiàn)簡(jiǎn)單的輪播圖效果
這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)簡(jiǎn)單的輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07使用Promise和JavaScript有效處理1000個(gè)請(qǐng)求的方法
在現(xiàn)代Web開(kāi)發(fā)中,處理高并發(fā)請(qǐng)求是一個(gè)常見(jiàn)的挑戰(zhàn),當(dāng)我們需要從服務(wù)器獲取大量數(shù)據(jù)或執(zhí)行多個(gè)異步任務(wù)時(shí),如何有效地管理請(qǐng)求的并發(fā)性和性能變得至關(guān)重要,本文將介紹如何使用Promise和JavaScript來(lái)管理高并發(fā)請(qǐng)求,需要的朋友可以參考下2023-09-09Echarts折線圖設(shè)置線條顏色及線條以下代碼示例
最近項(xiàng)目需要,一直在使用Echarts視圖,現(xiàn)在遇到一個(gè)要修改echarts折線圖顏色的需求,下面這篇文章主要給大家介紹了關(guān)于Echarts折線圖設(shè)置線條顏色及線條以下區(qū)域漸變顏色的相關(guān)資料,需要的朋友可以參考下2024-02-02新人報(bào)道,發(fā)個(gè)小技巧(js數(shù)組重復(fù)判斷)
js數(shù)組重復(fù)判斷2008-10-10