首页 > web前端 > js教程 > 正文

JS数组去重方法_性能优化技巧总结

狼影
发布: 2025-11-15 19:54:50
原创
615人浏览过
使用Set去重是处理基本类型数组的最优解,代码简洁且性能高;对象数组则推荐通过Map或对象键值配合唯一标识进行去重,避免使用indexOf等低效方法,以提升大数据量下的执行效率。

js数组去重方法_性能优化技巧总结

JavaScript数组去重是开发中常见的需求,尤其在处理大量数据时,选择高效的去重方法对性能影响显著。不同的方法适用于不同场景,合理选择能有效提升执行效率。

使用Set进行去重(推荐基础方法)

ES6引入的Set结构天然支持唯一值,结合展开运算符或Array.from可快速实现去重。

优点:代码简洁、性能优秀,适合大多数场景。

示例:

BibiGPT-哔哔终结者
BibiGPT-哔哔终结者

B站视频总结器-一键总结 音视频内容

BibiGPT-哔哔终结者 28
查看详情 BibiGPT-哔哔终结者

const uniqueArr = [...new Set(arr)];

对于纯基本类型数组(如数字、字符串),这是目前最推荐的方式,时间复杂度接近O(n)。

利用对象键值去重(适用于含引用类型的场景)

当数组元素为对象时,Set无法直接判断重复。可通过JSON.stringify将对象转为字符串作为唯一标识。

示例:

const uniqueByObj = (arr, key) => {
  const seen = {};
  return arr.filter(item => {
    const k = key ? item[key] : JSON.stringify(item);
    if (seen[k]) return false;
    seen[k] = true;
    return true;
  });
};

注意:JSON.stringify性能开销较大,且对undefined、function等不友好,建议指定唯一字段key来优化。

Map辅助去重(高性能复杂场景)

在需要保留复杂逻辑判断时,Map比普通对象更高效,尤其是大数据量下。

示例:按对象某个属性去重

const uniqueByMap = (arr, prop) => {
  const map = new Map();
  return arr.filter(item => {
    if (map.has(item[prop])) return false;
    map.set(item[prop], true);
    return true;
  });
};

Map在频繁增删查操作中性能优于普通对象,适合大型数组或高频调用场景。

避免低效方法:indexOf + filter

常见但低效的写法:

arr.filter((item, index) => arr.indexOf(item) === index);

问题:indexOf内部遍历导致整体复杂度升至O(n²),数据量大时明显卡顿。

应尽量避免在性能敏感场景使用此类嵌套遍历方式。

基本上就这些。小数据量下差异不明显,但面对上千条以上数据时,选用Set或Map方案能显著减少执行时间。根据数组类型和业务需求选择最合适的方法,才是真正的性能优化关键。

以上就是JS数组去重方法_性能优化技巧总结的详细内容,更多请关注php中文网其它相关文章!

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号