用filter剔除本地缓存重复配置需先安全读取并校验localstorage中的json数组,再用set配合filter按id或name-version组合键去重,最后可选写回缓存;关键在结构校验、字段存在性判断及json异常处理。

用 filter 剔除本地缓存中的重复配置,核心是先读取缓存数据(比如来自 localStorage),再对数组按某个唯一字段(如 id、name 或组合键)去重,最后写回或直接使用。注意:filter 本身不直接去重,需配合 findIndex、indexOf 或辅助对象/ Set 来实现逻辑判断。
1. 从 localStorage 读取并解析配置数组
确保缓存中存的是合法 JSON 数组,否则要加错误处理:
const cachedConfigs = JSON.parse(localStorage.getItem('appConfigs') || '[]');
// 安全兜底:非数组则设为空数组
const configs = Array.isArray(cachedConfigs) ? cachedConfigs : [];
2. 按单个字段(如 id)去重
保留首次出现的项,后续重复 id 的被过滤掉:
const seenIds = new Set();
const uniqueByid = configs.filter(item => {
if (seenIds.has(item.id)) return false;
seenIds.add(item.id);
return true;
});
3. 按多个字段(如 name + version)组合去重
构造唯一键字符串,避免字段值含特殊字符导致误判(简单场景可直接拼接):
const seenKeys = new Set();
const uniqueByCombo = configs.filter(item => {
const key = `${item.name}-${item.version}`; // 确保字段存在,建议加?. 或默认值
if (seenKeys.has(key)) return false;
seenKeys.add(key);
return true;
});
4. 写回 localStorage(可选)
去重后如需持久化更新:
localStorage.setItem('appConfigs', JSON.stringify(uniqueByid));
不复杂但容易忽略:务必校验缓存数据结构、处理 undefined 字段、避免 JSON 解析失败。用 Set 配合 filter 是轻量又清晰的做法。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











