javascript中set用于存储唯一值,可一行实现字符串字符去重(如[...new set('abac')].join('')→'abc')或字符串数组去重(如[...new set(arr)]),支持预处理实现忽略大小写/空白的语义去重,搭配map还可统计频次。

JavaScript 中的 Set 是一种内置对象,用于存储唯一值(不重复),天然适合字符串去重——无论是单个字符串内部字符去重,还是多个字符串组成的数组去重,都能一行搞定。
单个字符串去重:提取不重复字符
字符串本质是类数组,可直接用扩展运算符转为字符数组,再传入 Set 去重,最后拼回字符串:
[...new Set('abac')] → ['a', 'b', 'c'][...new Set('abac')].join('') → 'abc'- 注意:顺序保留原始首次出现位置,不是按字母排序
字符串数组去重:过滤重复项
当有一组字符串(如用户输入的标签、URL 列表),用 Set 去重最简洁:
const arr = ['apple', 'banana', 'apple', 'cherry'];const unique = [...new Set(arr)]; // ['apple', 'banana', 'cherry']- 比
filter()+indexOf()或reduce()更直观、性能更优
忽略大小写或空白的去重(需预处理)
Set 本身区分大小写和空格,若需“语义去重”,先统一格式再构造 Set:
const words = ['Hello', 'hello', ' world ', 'World'];const uniqueByLowerTrim = [...new Set(words.map(s => s.trim().toLowerCase()))];- 结果:
['hello', 'world']
与 Map 配合实现带计数的去重分析
如果不仅要去重,还要统计每个字符/字符串出现次数,Set 搭配 Map 很自然:
- 先用
Set获取所有唯一值,再遍历原数据统计频次 - 或直接用
Map累加,最后用Map.keys()获得去重后的键列表 - 例如:
[...new Map(arr.map(v => [v, 1])).keys()]也可去重(但不如直接用Set直观)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











