Set結(jié)構(gòu)和數(shù)組結(jié)構(gòu)很類似 但是成員的值都是唯一的叉弦,沒有重復(fù)的值丐一。Set 本身是一個(gè)構(gòu)造函數(shù),用來生成 Set 數(shù)據(jù)結(jié)構(gòu)淹冰。
Set 實(shí)例的方法分為兩大類:操作方法(用于操作數(shù)據(jù))和遍歷方法(用于遍歷成員)库车。
Set 實(shí)例有以下屬性:
Set.prototype.constructor:構(gòu)造函數(shù),默認(rèn)就是Set函數(shù)樱拴。
Set.prototype.size:返回Set實(shí)例的成員總數(shù)柠衍。
四個(gè)操作方法:
add(value):添加某個(gè)值,返回 Set 結(jié)構(gòu)本身晶乔。
delete(value):刪除某個(gè)值珍坊,返回一個(gè)布爾值,表示刪除是否成功正罢。
has(value):返回一個(gè)布爾值阵漏,表示該值是否為Set的成員。
clear():清除所有成員翻具,沒有返回值履怯。
四個(gè)遍歷方法:
keys():返回鍵名的遍歷器(由于Set 有鍵值 沒鍵名 或者說鍵名和鍵值是同一個(gè)值 所以 和values()的行為一致)
values():返回鍵值的遍歷器(由于Set 有鍵值 沒鍵名?或者說鍵名和鍵值是同一個(gè)值?所以 和keys()的行為一致)
entries():返回鍵值對(duì)的遍歷器
forEach():使用回調(diào)函數(shù)遍歷每個(gè)成員
Set 結(jié)構(gòu)的實(shí)例默認(rèn)可遍歷,它的默認(rèn)遍歷器生成函數(shù)就是它的values方法;這意味著裆泳,可以省略values方法虑乖,直接用for...of循環(huán)遍歷 Set。
Array.from(el)方法可以將set結(jié)構(gòu)轉(zhuǎn)換為數(shù)組 el參數(shù)為set對(duì)象
利用該方法和set的特性就可以寫一個(gè)數(shù)組去重了晾虑。
也許還有更簡(jiǎn)單的辦法,上面的寫了一個(gè)的function 利用Array.from();也可以試著用一個(gè)...擴(kuò)展運(yùn)算符來搞一下去重仅叫。
擴(kuò)展運(yùn)算符...和Set的結(jié)合帜篇,讓數(shù)組的map和filter方法也可以間接用于 Set 了。利用Set 可以很容易地實(shí)現(xiàn)并集(Union)诫咱、交集(Intersect)和差集(Difference)笙隙。