答案:数组去重推荐使用Set(基本类型)、Map标记法(对象数组),根据数据类型、规模和环境选择方案。

数组去重是前端开发中常见的需求,不同方法在性能、兼容性和可读性上各有优劣。下面介绍几种主流的数组去重方案,并结合实际场景分析其性能表现。
原理: ES6 提供的 Set 数据结构自动保证元素唯一性,结合扩展运算符可快速实现去重。
优点:代码简洁,性能优秀,适用于基本类型数组。 缺点:无法区分对象引用,对复杂对象无效。示例:
const arr = [1, 2, 2, 3, 4, 4, 5]; const unique = [...new Set(arr)]; // 结果:[1, 2, 3, 4, 5]
原理: 遍历数组,通过 indexOf 返回第一个匹配索引,若与当前索引一致则保留。
优点:兼容老浏览器(IE9+),逻辑清晰。 缺点:时间复杂度 O(n²),大数据量时性能差。示例:
const unique = arr.filter((item, index) => arr.indexOf(item) === index);
原理: 利用 reduce 累积唯一值,使用 includes 检查是否已存在。
eSiteGroup站群管理系统是基于eFramework低代码开发平台构建,是一款高度灵活、可扩展的智能化站群管理解决方案,全面支持SQL Server、SQLite、MySQL、Oracle等主流数据库,适配企业级高并发、轻量级本地化、云端分布式等多种部署场景。通过可视化建模与模块化设计,系统可实现多站点的快速搭建、跨平台协同管理及数据智能分析,满足政府、企业、教育机构等组织对多站点统一管控的
0
示例:
const unique = arr.reduce((acc, item) => {
return acc.includes(item) ? acc : [...acc, item];
}, []);
原理: 遍历数组,用 Map 记录已出现的值,键为字符串化后的值或引用。
优点:支持对象去重,时间复杂度 O(n),性能最优。 缺点:需手动处理键生成逻辑,如 JSON.stringify 可能有局限。示例(基于对象属性去重):
const unique = (arr, key) => {
const seen = new Map();
return arr.filter(item => {
const k = item[key];
if (seen.has(k)) return false;
seen.set(k, true);
return true;
});
};
性能对比总结:
基本上就这些。选择哪种方式,取决于数据类型、规模和运行环境。Set 是大多数情况下的首选,复杂场景再考虑定制方案。不复杂但容易忽略的是去重依据——是值相等?引用相同?还是某个字段唯一?明确这一点才能选对方法。
以上就是数组去重:多种方案与性能对比的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号