JavaScript中可用Set配合扩展运算符或Array.from()实现并集:先合并元素再构造新Set自动去重;支持多集合封装为unionSets函数;注意顺序不保证、严格相等比较、不可用算术运算符。

JavaScript 中可以用 Set 配合扩展运算符(...)或 Array.from() 快速实现两个集合的并集,核心思路是把两个 Set 的所有值合并后重新构造一个新的 Set。
用扩展运算符 + 构造函数(最常用)
这是最简洁直观的方式:将两个 Set 转为数组元素,再传入新的 Set 构造函数,自动去重。
const setA = new Set([1, 2, 3]);
const setB = new Set([3, 4, 5]);
const union = new Set([...setA, ...setB]);
console.log(union); // Set { 1, 2, 3, 4, 5 }
说明:
-
[...setA, ...setB]展开两个 Set 为一个数组,包含所有元素(含重复项) -
new Set(...)自动过滤重复值,只保留唯一项
用 Array.from() + Set 构造(兼容性稍好)
在极老环境(如不支持扩展运算符的 IE)中可选此方式,逻辑一致:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const union = new Set(Array.from(setA).concat(Array.from(setB)));
或者更清晰地分步写:
const arrA = Array.from(setA); const arrB = Array.from(setB); const union = new Set([...arrA, ...arrB]);
封装成可复用的函数
便于多次调用,支持任意多个 Set:
function unionSets(...sets) {
return new Set(sets.flatMap(set => [...set]));
}
// 使用示例
const a = new Set([1, 2]);
const b = new Set([2, 3]);
const c = new Set([3, 4]);
console.log(unionSets(a, b, c)); // Set { 1, 2, 3, 4 }
说明:
-
flatMap把每个 Set 展开成数组,再扁平化为单层数组 - 传给
new Set()完成去重合并
注意点
Set 的并集本质是“所有唯一值的集合”,所以:
- 原始顺序不保证(Set 迭代顺序按插入顺序,但并集结果取决于先插入哪个 Set)
- 值必须严格相等(
===),对象引用不同即视为不同元素 - 不能直接用
+或||等操作符,Set 不支持算术或逻辑运算符重载

















