JavaScript数组去重核心是保留首次出现的唯一值:Set法最简高效,适用于基础类型;filter+indexOf兼容性好且原理清晰;对象数组需按字段(如id)配合Set判断;reduce则适合多条件复杂逻辑。

JavaScript 数组去重,最直接的方式是保留每个元素的**第一次出现**,把后续所有重复项都过滤掉。这不是简单“去掉重复”,而是“只留首次出现的唯一值”。
用 Set 快速去重(推荐)
Set 自动去重,再转回数组即可,代码简洁、性能好,适合大多数场景:
✅ 适用:基础类型(数字、字符串、布尔值)数组
const arr = [1, 2, 2, 3, 3, 4]; const unique = [...new Set(arr)]; // [1, 2, 3, 4]
用 filter + indexOf 保留首次出现
手动控制逻辑,兼容性更好(支持老浏览器),也更易理解去重原理:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const arr = [1, 2, 2, 3, 3, 4]; const unique = arr.filter((item, index) => arr.indexOf(item) === index); // [1, 2, 3, 4]
处理对象数组(按某个字段去重)
原生 Set 对对象不生效(因为对象引用不同),需按属性(如 id、name)判断是否重复:
立即学习“Java免费学习笔记(深入)”;
✅ 适用:[{id: 1, name: 'a'}, {id: 1, name: 'b'}] 这类数据
const users = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alicia'}];
const seen = new Set();
const uniqueUsers = users.filter(item => {
if (seen.has(item.id)) return false;
seen.add(item.id);
return true;
});
// [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}]
用 reduce 实现灵活去重
适合需要组合多个条件或复杂逻辑(比如按多个字段、忽略大小写等):
const arr = ['a', 'B', 'b', 'A', 'c'];
const unique = arr.reduce((acc, current) => {
const lower = current.toLowerCase();
if (!acc.some(item => item.toLowerCase() === lower)) {
acc.push(current);
}
return acc;
}, []);
// ['a', 'B', 'c']

















