使用ES6 创建Set类

date
Mar 19, 2023
slug
js-set-es6
status
Published
tags
JavaScript数据结构与算法
Set
TypeScript
summary
Create a Set class using ES6
type
Post
 
es6拥有内置的set类及其API,因此可以直接调用 set 类进行创建,无需构建set
const set = new Set();
set.add(1);
console.log(set.values());
console.log(set.has(1));
console.log(set.size);
输出:
[Set Iterator] { 1 }
true
1
接下来模拟并集、交集、差集和子集的数学运算。首先创建两个集合实例
const setA = new Set();
setA.add(1);
setA.add(2);
setA.add(3);

const setB = new Set();
setB.add(2);
setB.add(3);
setB.add(4);

并集

const union = (setA,setB) => {
    const unionAB = new Set();
    setA.forEach(value => {
        unionAB.add(value);
    })
    setB.forEach( value => {
        unionAB.add(value);
    })
    return unionAB;
}

console.log(union(setA,setB));
//Set(4) { 1, 2, 3, 4 }

交集

创建集合包含 setA 和 setB 都有的元素
const intersection = (setA,setB) => {
    const intersectionSet = new Set();
    setA.forEach( value => {
        if(setB.has(value)){
            intersectionSet.add(value);
        }
    })
    return intersectionSet;
}

console.log(intersection(setA,setB));
//Set(2) { 2, 3 }

差集

创建 setA 有而 setB 没有的元素
const difference = (setA,setB) => {
    const differenceSet = new Set();
    setA.forEach( value => {
        if(!setB.has(value))
        {
            differenceSet.add(value);
        }
    })
    return differenceSet;
}
console.log(difference(setA,setB));
//Set(1) { 1 }
 

© shallrise 2024