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;