使用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 }