使用Set去重是JavaScript中最高效的方法,适用于基本数据类型;对于对象数组则可通过filter配合findIndex按属性去重。

JavaScript 实现数组去重有多种方法,根据数据类型和性能需求可以选择不同的方式。以下是几种常用且实用的方法。
1. 使用 Set 去重(推荐)
ES6 提供了 Set 数据结构,它只存储唯一值,结合扩展运算符可以快速去重,适用于基本数据类型(如字符串、数字)。
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = […new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
这种方法简洁高效,是目前最常用的去重方式。
2. 使用 filter + indexOf
通过遍历数组,利用 indexOf 返回第一个匹配项的索引,判断当前项是否为首次出现。
立即学习“Java免费学习笔记(深入)”;
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
兼容性好,适合不支持 Set 的旧环境,但对大数据量性能较差。
3. 使用 reduce 构建唯一数组
利用 reduce 累积一个不含重复值的新数组。
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.reduce((acc, curr) => {
if (!acc.includes(curr)) {
acc.push(curr);
}
return acc;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
逻辑清晰,适合需要在累积过程中处理其他逻辑的场景。
4. 对象数组去重(按某个属性)
如果数组元素是对象,不能直接用 Set 或 indexOf。可以通过属性值来去重,例如使用 filter 配合 findIndex。
const users = [
{ id: 1, name: ‘Alice’ },
{ id: 2, name: ‘Bob’ },
{ id: 1, name: ‘Alice’ }
];
const uniqueUsers = users.filter((user, index, self) =>
self.findIndex(u => u.id === user.id) === index
);
console.log(uniqueUsers);
这样可以根据指定字段(如 id)确保对象唯一。
基本上就这些常见方法。简单去重首选 Set,复杂条件可选 filter 或 reduce。根据实际数据结构选择合适方案即可。
以上就是javascript_如何实现数组去重的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1540890.html
微信扫一扫
支付宝扫一扫