Set可自动去重标签,直接add或批量初始化即可;需忽略大小写时先标准化再入Set;转数组用[...set];React中需用新Set实例触发更新。

用 Set 实现标签云的自动去重非常简单——只要把所有标签塞进 Set,它天然就帮你去重了,不用手动遍历比对。
直接用 Set 收集标签
每次新增标签时,往 Set 里添加即可,重复值会被自动忽略:
const tags = new Set();tags.add("前端"); tags.add("JavaScript"); tags.add("前端"); // 第二个"前端"不生效- 最终
tags.size === 2,且内容是{"前端", "JavaScript"}
从数组批量初始化并去重
如果已有标签数组(比如后端返回或用户输入拼成的),可直接传入 Set 构造函数:
const rawTags = ["Vue", "React", "Vue", "TypeScript", "React"];const uniqueTags = new Set(rawTags); // 自动过滤重复- 转回数组:
[...uniqueTags]或Array.from(uniqueTags)
忽略大小写或空格等“语义重复”
Set 默认严格比较(===),所以 "vue" 和 "Vue" 被视为不同。如需统一处理,先标准化再进 Set:
立即学习“Java免费学习笔记(深入)”;
const normalized = rawTags.map(t => t.trim().toLowerCase());const uniqueTags = new Set(normalized);- 若还需保留原始格式,可用
Map记录映射关系,但多数标签云场景直接标准化显示更合理
配合 UI 更新(例如 React 或原生)
标签云通常要渲染列表,Set 可直接用于响应式更新:
- React 中:状态设为
useState(new Set()),添加后用setState(prev => new Set(prev).add(newTag)) - 原生 JS 渲染:
tags.forEach(tag => { /* 创建/更新 DOM 元素 */ }) - 删除标签也方便:
tags.delete("JavaScript"),之后重新渲染即可
不复杂但容易忽略:Set 是引用类型,直接修改(add/delete)不会触发 React 状态更新,记得用新实例或强制刷新。


















