ES6之Set小结

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值
Set本身是一个构造函数,用来生成 Set 数据结构。

const s = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
for (let i of s) {
  console.log(i); 2 3 5 4
}

Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化

const set =new Set([1,2,3,5,6,7,7]);
console.log([...set]);
console.log(set,'长度:',set.size);

在这里插入图片描述

//接受类似数组的对象作为参数。
const set1=new Set(document.querySelectorAll('div'));
console.log('数组的对象作为参数:',[...set1],set.size)

去除数组重复成员的方法

 console.log('去除数组重复成员',[...new Set([1,2,3,4,51,1])],'去重',[...new Set(numArr)]);

在这里插入图片描述
去除字符串里面的重复字符

console.log('去除字符串里面的重复字符',[...new Set('ababbc')].join(''));

Set 结构及数组互转:
Array.from方法可以将 Set 结构转为数组,(此方法与set使用也可以去重哦!)

const arr=Array.from(new Set([1, 2, 3,4,3, 4, 5]));
 console.log('Set 结构转为数组',arr)

在这里插入图片描述
set:数组转set

const sr1 = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => sr1.add(x));
console.log(sr1)

在这里插入图片描述


  • Set 结构的实例有以下属性。
  • Set.prototype.constructor:构造函数,默认就是Set函数。
  • Set.prototype.size:返回Set实例的成员总数。

set实例方法两种:操作方法(用于操作数据)和遍历方法(用于遍历成员)

1.操作方法(用于操作数据)
Set.prototype.add(value):添加某个值,返回 Set 结构本身。
Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
Set.prototype.clear():清除所有成员,没有返回值。

s.add(1).add(2).add(2);
// 注意2被加入了两次
s.size // 2
s.has(1) // true
s.has(2) // true
s.has(3) // false
s.delete(2);
s.has(2) // false

2.Set 结构的实例有四个遍历方法,可以用于遍历成员。
Set.prototype.keys():返回键名的遍历器
Set.prototype.values():返回键值的遍历器
Set.prototype.entries():返回键值对的遍历器
Set.prototype.forEach():使用回调函数遍历每个成员

扫描二维码关注公众号,回复: 11895086 查看本文章
let set = new Set(['red', 'green', 'blue']);
for (let item of set.keys()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.values()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.entries()) {
  console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]

Set 实现并集(Union)、交集(Intersect)和差集(Difference)。

let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);

// 并集
let union = new Set([...a, ...b]);
// Set {1, 2, 3, 4}

// 交集
let intersect = new Set([...a].filter(x => b.has(x)));
// set {2, 3}

// 差集
let difference = new Set([...a].filter(x => !b.has(x)));
// Set {1}

文章es6:
http://es6.ruanyifeng.com/#docs/set-map

猜你喜欢

转载自blog.csdn.net/ee_11eeeeee/article/details/98897370