ES6 Set

consts=newSet();

[2,3,4,5,2,2,3].forEach(x=>s.add(x));//向Set中添加值

for(letiofs){

document.write(i+',')

}//數(shù)組去重,結(jié)果 2,3,4,5

constset=newSet([6,7,8,8,9,7]);

console.log([...set]);//數(shù)組格式去重 結(jié)果:6,7,8,9? ? 數(shù)組去重格式[...new Set(array)];

向Set插入值時,并不會發(fā)生數(shù)據(jù)格式轉(zhuǎn)換,所以5和'5'是兩個不同的值;另外,兩個對象總是不相等的。會被視為兩個值。

Set實例的方法分為兩大類:操作方法(用于操作數(shù)據(jù))和遍歷方法(用于遍歷成員)。下面先介紹四個操作方法。

add(value):添加某個值,返回Set結(jié)構(gòu)本身。

delete(value):刪除某個值,返回一個布爾值,表示刪除是否成功。

has(value):返回一個布爾值,表示該值是否為Set的成員。

clear():清除所有成員,沒有返回值。

Array.from將Set結(jié)構(gòu)轉(zhuǎn)為數(shù)組。

constitems=newSet([1,2,3,5,4]);

constarray=Array.from(items);

數(shù)組的去重方法

functiondedupe(arr){

returnArray.from(newSet(arr));

}

Set結(jié)構(gòu)的實例有四個遍歷方法,可以用于遍歷成員。

keys():返回鍵名的遍歷器

values():返回鍵值的遍歷器

entries():返回鍵值對的遍歷器

forEach():使用回調(diào)函數(shù)遍歷每個成員

需要特別指出的是,Set的遍歷順序就是插入順序。這個特性有時非常有用,比如使用Set保存一個回調(diào)函數(shù)列表,調(diào)用時就能保證按照添加順序調(diào)用

Set結(jié)構(gòu)沒有鍵名所謂key,所以keys(),values(),遍歷的時候鍵值就是鍵名去遍歷的,執(zhí)行操作是完全一樣的。

letset=newSet([1,2,3,2,1,5]);

for(letiofset.keys()){

console.log(i)

}

for(letiofset.values()){

console.log(i)

}

結(jié)果1,2,3,5一模一樣

for(letitemofset.entries()) {

console.log(item);

}

遍歷出來鍵值,鍵名是一樣的,列舉一個結(jié)果[1,1];

Set結(jié)構(gòu)默認(rèn)遍歷是values,所以forof時可省略values();

Set結(jié)構(gòu)的forEach是對每個成員的操作。

letset=newSet([1,2,3,4,5]);

set.forEach((value)=>{

console.log(value*2);

})

對每個value*2;

在操作中如果想要同步改變Set結(jié)構(gòu),可直接賦值;

letset=newSet([1,2,3,4]);

set=newSet([...set].map(value=>value*2))

console.log(set)

另外一種就是Array.from

set=newSet(Array.from(set,value=>value*2))

console.log(set);

文章總結(jié)于:阮老師的ES6

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容