set,存放不重复数据的集合类型
一直以來(lái),JS只能使用數(shù)組和對(duì)象來(lái)保存多個(gè)數(shù)據(jù),缺乏像其他語(yǔ)言那樣擁有豐富的集合類型。因此ES6新增了兩種集合類型(map和set),用在不同的場(chǎng)景中發(fā)揮作用。其中,set用于存放不重復(fù)的數(shù)據(jù)
目錄
1.set集合的創(chuàng)建
?2.對(duì)set集合進(jìn)行后續(xù)的操作
3.與數(shù)組進(jìn)行交換
?4.遍歷
1.set集合的創(chuàng)建
【例1】
//方法1:創(chuàng)建一個(gè)沒(méi)有任何內(nèi)容的set集合 const s1 = new Set(); console.log(s1); //方法2:創(chuàng)建一個(gè)具有初始內(nèi)容的set集合,內(nèi)容來(lái)自于可迭代對(duì)象每一次迭代的結(jié)果 const s2 = new Set("abcdabcd"); console.log(s2);【結(jié)果】
?2.對(duì)set集合進(jìn)行后續(xù)的操作
1)add(數(shù)據(jù)):添加一個(gè)數(shù)據(jù)到set集合末尾,如果數(shù)據(jù)已存在,則不進(jìn)行任何操作
2)set使用Object.is的方式來(lái)判斷兩個(gè)數(shù)據(jù)是否相同,但是,針對(duì)+0和-0,set認(rèn)為是相等的
【例2】
const s1 = new Set(); s1.add(1); s1.add(2); s1.add(1); //無(wú)效 s1.add(+0); s1.add(-0); //無(wú)效 console.log(s1);【結(jié)果】
?3)has(數(shù)據(jù)):判斷set中是否存在對(duì)應(yīng)的數(shù)據(jù)
4)delete(數(shù)據(jù)):刪除匹配的數(shù)據(jù),返回是否刪除成功
5)clear():清空整個(gè)set集合
6)size:獲取set集合中的元素?cái)?shù)量,只讀屬性,無(wú)法重新賦值
3.與數(shù)組進(jìn)行交換
【例3】數(shù)組去重
const arr = [1,3,46,75,24,66,3,46,87]; console.log('arr:',arr) const s = new Set(arr); const result = [...s]; console.log('去重后:',result);【結(jié)果】
?4.遍歷
1)使用for-of循環(huán)
【例4】
const s1 = new Set("12345"); console.log(s1); for (const iterator of s1) {console.log(iterator); }【結(jié)果】
?2)使用set中的實(shí)例方法forEach
【例5】
const s1 = new Set("12345"); s1.forEach((item, index, s) => {console.log('item:',item,'index:', index,'set:', s); })【結(jié)果】
【注】set集合中不存在下標(biāo),因此forEach中的回調(diào)的第二個(gè)參數(shù)和第一個(gè)參數(shù)是一致的,均表示set中的每一項(xiàng)
總結(jié)
以上是生活随笔為你收集整理的set,存放不重复数据的集合类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 生成器——迭代器工作的工厂
- 下一篇: AMD和CMD出生的背景和它们解决的问题