javascript 的 set 可自动去重历史搜索词,只需调用 add() 方法;需在合适作用域初始化,配合 trim()/tolowercase() 预处理,并通过 json 序列化实现 localstorage 持久化。

用 JavaScript 的 Set 实现历史搜索词自动去重,核心是利用其“只存唯一值”的特性,避免手动判断重复。只要把每次输入的搜索词添加进 Set,它会自动忽略已存在的项,无需额外写去重逻辑。
初始化一个持久化的搜索历史 Set
建议在合适的作用域(如模块顶层或组件实例属性)中创建一个 Set,确保多次搜索操作共享同一集合:
- 如果只是页面级临时记录,可声明为全局变量或闭包内变量
- 若需刷新后保留,需配合
localStorage序列化还原(Set本身不能直接存入 localStorage) - 示例:
const searchHistory = new Set();
每次搜索时自动添加并保持唯一
用户提交搜索词后,直接调用 add() 方法即可。重复词不会被重复插入,也不报错:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
searchHistory.add("前端");→ 加入 -
searchHistory.add("前端");→ 无变化,仍只有 1 个 - 支持任意类型(字符串、数字等),但搜索场景通常用字符串,注意大小写和空格敏感
展示或导出时转成数组并按需排序
Set 本身不保证插入顺序(实际多数引擎按插入序,但规范不保证),如需最新优先或字母序,应显式处理:
- 转数组:
[...searchHistory]或Array.from(searchHistory) - 倒序显示(最近搜索在前):
[...searchHistory].reverse() - 去空格/统一小写再去重?Set 不做预处理,需在
add()前清洗,例如:searchHistory.add(term.trim().toLowerCase())
可选:与 localStorage 同步实现持久化
刷新页面后恢复历史,需手动序列化和反序列化:
- 保存:
localStorage.setItem('searchHistory', JSON.stringify([...searchHistory])) - 读取:
const saved = JSON.parse(localStorage.getItem('searchHistory') || '[]');
const searchHistory = new Set(saved); - 注意:JSON 不支持
Set,只能存数组;且要捕获解析异常(如 localStorage 被清空)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










