consts=newSet();
[2,3,4,5,2,2,3].forEach(x=>s.add(x));//向Set中添加值
for(letiofs){
document.write(i+',')
}//数组去重,结果 2,3,4,5
constset=newSet([6,7,8,8,9,7]);
console.log([...set]);//数组格式去重 结果:6,7,8,9 数组去重格式[...new Set(array)];
向Set插入值时,并不会发生数据格式转换,所以5和'5'是两个不同的值;另外,两个对象总是不相等的。会被视为两个值。
Set实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。
add(value):添加某个值,返回Set结构本身。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为Set的成员。
clear():清除所有成员,没有返回值。
Array.from将Set结构转为数组。
constitems=newSet([1,2,3,5,4]);
constarray=Array.from(items);
数组的去重方法
functiondedupe(arr){
returnArray.from(newSet(arr));
}
Set结构的实例有四个遍历方法,可以用于遍历成员。
keys():返回键名的遍历器
values():返回键值的遍历器
entries():返回键值对的遍历器
forEach():使用回调函数遍历每个成员
需要特别指出的是,Set的遍历顺序就是插入顺序。这个特性有时非常有用,比如使用Set保存一个回调函数列表,调用时就能保证按照添加顺序调用
Set结构没有键名所谓key,所以keys(),values(),遍历的时候键值就是键名去遍历的,执行操作是完全一样的。
letset=newSet([1,2,3,2,1,5]);
for(letiofset.keys()){
console.log(i)
}
for(letiofset.values()){
console.log(i)
}
结果1,2,3,5一模一样
for(letitemofset.entries()) {
console.log(item);
}
遍历出来键值,键名是一样的,列举一个结果[1,1];
Set结构默认遍历是values,所以forof时可省略values();
Set结构的forEach是对每个成员的操作。
letset=newSet([1,2,3,4,5]);
set.forEach((value)=>{
console.log(value*2);
})
对每个value*2;
在操作中如果想要同步改变Set结构,可直接赋值;
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);
文章总结于:阮老师的ES6;