javascript数组去重方法汇总
前言
数组去重已经是一个老生常谈的问题了,依然经久不息,经过岁月的变迁es标准的升级迭代,似乎有越来越多的方法和方式供我们使用,那么那种方式才是最优的?那种才是最简洁的?这个我们一起来探讨。
省略:传统的递归方法,这里我就不说了,是最传统也是最笨的方法。
方法一:es5使用filter
使用Array.prototype.filter()方法,对元素进行过滤;
var array = [2, "2", 2, "2"]; // es5 使用filter function unique(array) { var obj = {}; return array.filter(function (item, index) { var fullItem = (typeof item + item); return obj.hasOwnProperty(fullItem) ? false : (obj[fullItem] = true); }); } console.log(unique(array)); //[2,"2"]
方法二:使用es6 Set
Set里的元素只能出现一次,即元素是唯一的。
下面的代码中也使用了(...)扩展语句,简单来说就是把数组转换成n个对象的方法。
相关链接:Set
var array = [2, "2", 2, "2"]; //es6 使用Set特性(Set元素只会出现一次,即元素是唯一的) let unique = (array) => [...new Set(array)]; //(...)扩展语句,简单来说就是把数组参数转换为多个对象参数 console.log(unique(array)); //[2,"2"]
方法三:使用es6 Map
Map也是es6新出的数据类型,方法set、has、get、clear、delete、keys都挺好用的。
相关链接:Map
var array = [2, "2", 2, "2"]; //es6 Map 本质使用的还是Array.prototype.filter() function unique(array) { let m = new Map(); return array.filter((item) => !m.has(item) && m.set(item, 1)); } console.log(unique(array));
总结
个人觉得最优的方案是第二种!欢迎补充,欢迎指正~
关注下面二维码,订阅更多精彩内容。

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验