set 的 add() 方法返回当前 set 实例,支持链式调用添加多个值并自动去重,如 new set().add('a').add('b').add('c').add('a');但动态条件添加时建议分开处理以保证可读性。

Set 的 add() 方法本身返回的是 Set 实例,因此支持链式调用,但要注意:它**不返回新 Set,而是返回当前 Set 引用**,所以可以连续调用 add() 添加多个值,且自动去重。
✅ 正确的链式调用写法
直接在同一个 Set 实例上调用多次 add():
const set = new Set()
.add('a')
.add('b')
.add('c')
.add('a'); // 重复添加,无效果
console.log(set); // Set(3) {'a', 'b', 'c'}
⚠️ 注意事项
- add() 总是返回 this,不是新 Set,所以链式调用安全,不会意外创建多个实例
- 重复值会被忽略,不影响后续调用 —— 第二个
.add('a')不报错也不改变内容 - 链式调用适合初始化时批量添加,但不适合动态条件添加(如需 if 判断,建议拆开写)
? 替代方案:用数组初始化更简洁
如果只是初始化一批唯一值,推荐直接传数组给构造函数,语义更清晰:
const set = new Set(['a', 'b', 'c', 'a']); // 自动去重
等价于链式调用,且更易读、少写点。
? 动态添加多个值(带逻辑)
若需根据条件添加,链式不直观,建议先收集再批量加:
const set = new Set();
['a', 'b', 'c', 'a'].forEach(item => {
if (item !== 'b') set.add(item); // 条件过滤
});
// 或用 Set.prototype.union(需自行实现或用库)
链式 add 简单直接,适合初始化;复杂逻辑建议分开处理,保持可读性。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











