集合

Mr.ZhaoAbout 1 min

1. 什么是集合

集合是由一组无序且唯一(即不能重复)的项组成的

ES6中的set结构就是集合

集合的常用操作:去重、判断某元素是否在集合中、求交集

2. 集合的运算

  • 并集:对于给定的两个集合,返回一个包含两个集合中所有元素的新集合
  • 交集:对于给定的两个集合,返回一个包含两个集合中共有元素的新集合
  • 差集:对于给定的两个集合,返回一个包含所有存在于第一个集合且不存在于第二个集合的元素的新集合

3. 集合的基本操作

// 创建集合
let mySet = new Set();

// 增
mySet.add(1);
mySet.add(5);
mySet.add(5);
mySet.add('a');
let o = { a: 1, b: 2 };
mySet.add(o);
mySet.add({ a: 1, b: 2 });
console.log(mySet);
console.log('------');

// 查
const has = mySet.has(1);
console.log(has);
console.log('------');

// 删
mySet.delete(5);
console.log(mySet);
console.log('------');

// 遍历
for (let item of mySet) {
    console.log(item);
}
console.log('------');

for (let item1 of mySet.keys()) {
    console.log(item1);
}
console.log('------');

for (let item2 of mySet.values()) {
    console.log(item2);
}
console.log('------');

for (let item3 of mySet.entries()) {
    console.log(item3);
}
console.log('------');

// 集合转换为数组
const myArr = [...mySet];
console.log(myArr);
console.log('------');

const myArr1 = Array.from(mySet);
console.log(myArr1);
console.log('------');

// 数组转换为集合
const mySet2 = new Set([1, 2, 3, 4]);
console.log(mySet2);
console.log('------');

// 求交集
const intersection = new Set([...mySet].filter((x) => mySet2.has(x)));
console.log(intersection);
console.log('------');

// 求两个集合的差异
const difference = new Set([...mySet].filter((x) => !mySet2.has(x)));
console.log(difference);
console.log('------');