ES6 Set

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;

你可能感兴趣的:(ES6 Set)