使用Set、filter结合indexOf、reduce及Map可实现JavaScript数组去重,基本类型推荐Set,对象数组按属性用Map键值映射,兼容老环境可用filter+indexOf。

在 JavaScript 中,数组去重是一个常见的需求,尤其是在处理用户输入、接口返回数据或进行数据清洗时。实现数组去重的方法有很多,每种方式适用于不同的场景。下面介绍几种常用且有效的数组去重方法。
Set 是 ES6 引入的数据结构,它只存储唯一值,天然适合去重。
这种方法适用于基本类型(如字符串、数字)的数组去重,代码简洁高效。示例:
const arr = [1, 2, 2, 3, 4, 4, 5]; const unique = [...new Set(arr)]; // 结果:[1, 2, 3, 4, 5]
通过 filter 配合 indexOf,保留第一次出现的元素。
立即学习“Java免费学习笔记(深入)”;
该方法兼容性好,适合不支持 Set 的老环境。示例:
const arr = ['a', 'b', 'a', 'c', 'b']; const unique = arr.filter((item, index) => arr.indexOf(item) === index); // 结果:['a', 'b', 'c']
利用 reduce 累积一个不含重复项的新数组。
这种方式逻辑清晰,便于添加自定义判断条件。示例:
const arr = [1, 2, 2, 3, 1];
const unique = arr.reduce((acc, curr) => {
if (!acc.includes(curr)) {
acc.push(curr);
}
return acc;
}, []);
// 结果:[1, 2, 3]
当数组元素是对象时,不能直接用 Set 或 indexOf,需根据某个唯一字段(如 id)去重。
常用方法是使用 Map 按键存储,确保唯一性。示例:按 id 去重
const users = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' }
];
const unique = Array.from(new Map(users.map(item => [item.id, item])).values());
// 结果:两个对象,id 为 1 和 2 各保留一个
基本上就这些。选择哪种方法取决于数据类型和浏览器兼容要求。简单数组优先用 Set,对象数组推荐 Map 键值映射,老项目可用 filter + indexOf。不复杂但容易忽略细节,比如引用类型比较的问题。
以上就是JavaScript 数组去重:多种方法实现数组元素唯一性的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号