JavaScript遍历Set推荐for...of循环,因其简洁、保持插入顺序且支持break/continue;其次可用forEach(参数为value,value,set);也可转数组后链式操作;for...in和JSON.stringify不适用。

JavaScript 中遍历 Set 集合有多种方式,最常用且推荐的是 for...of 循环,它直接按插入顺序访问每个成员,简洁、可读性强,且不依赖键名(Set 没有键-值对结构)。
用 for...of 循环遍历(推荐)
Set 是可迭代对象,原生支持 for...of,无需转换:
- 语法简单,语义清晰,直接拿到元素值
- 保持插入顺序,符合 Set 的设计特性
- 不污染作用域,比 forEach 更灵活(支持 break/continue)
示例:
const mySet = new Set(['a', 'b', 'c']);for (const item of mySet) {
console.log(item); // 输出: 'a', 'b', 'c'
}
用 forEach() 方法遍历
Set.prototype.forEach 接收一个回调函数,参数依次为:当前值、当前值(Set 中键和值相同)、Set 对象本身:
立即学习“Java免费学习笔记(深入)”;
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 适合需要访问 Set 实例本身或强调函数式风格的场景
- 不能用 break 或 return 跳出循环,如需提前终止需改用 for...of
示例:
mySet.forEach((value) => {console.log(value);
});
转成数组后遍历(按需使用)
借助 Array.from() 或扩展运算符 [...set] 转为数组,再用 map/filter/find 等方法:
- 适合需要链式操作、筛选、映射等复杂处理的场景
- 会创建新数组,存在轻微内存开销,大数据量时注意性能
示例:
[...mySet].map(x => x.toUpperCase()); // ['A', 'B', 'C']Array.from(mySet).filter(x => x !== 'b');
不建议的方式:for...in 和 JSON.stringify
Set 不是普通对象,没有自有可枚举属性:
- for...in 不会遍历 Set 元素,可能遍历原型链上的属性,结果不可靠
-
JSON.stringify(new Set()) 返回空对象
{},无法用于提取数据

















