前言


数组去重已经是一个老生常谈的问题了,依然经久不息,经过岁月的变迁es标准的升级迭代,似乎有越来越多的方法和方式供我们使用,那么那种方式才是最优的?那种才是最简洁的?这个我们一起来探讨。

省略:传统的递归方法,这里我就不说了,是最传统也是最笨的方法。

方法一:es5使用filter


使用Array.prototype.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));

总结


个人觉得最优的方案是第二种!欢迎补充,欢迎指正~

javascript数组去重方法汇总相关推荐

  1. JavaScript 数组去重方法合集(简洁易懂)

    JavaScript数组去重 JavaScript去重的七种方法 简单易懂 方法一:暴力去重法 // 暴力去重法 function ArrayIsUnique (array) {if (!Array. ...

  2. javascript数组去重方法性能测试比较

    昨天参加的一个前端面试,其中有一题数组去重,首先想到的是对象存键值的方法,代码如下 方法一:(简单存键值) Array.prototype.distinct1 = function() {var i= ...

  3. Javascript数组去重方法

    目录 什么是数组去重? 1.利用sort排序去重 2.利用indexOf去重 3.new Set 什么是数组去重? 把重复多余的元素剔除掉,我们常利用以下方法去重,方法很多,随便列举两种 1.利用so ...

  4. JavaScript数组去重方法整理

    常见的包括三类:暴力式嵌套遍历,先排序后遍历,词典式一次遍历. 这里只贴代码吧.可直接放在浏览器的控制台运行.详细的介绍文章(含参考文章的链接)在  http://borninsummer.com/b ...

  5. 六种方法实现JavaScript数组去重

    tip:有问题或者需要大厂内推的+我脉脉哦:丛培森 ٩( 'ω' )و [本文源址:http://blog.csdn.net/q1056843325/article/details/73277063 ...

  6. javascript数组去重的10种方法

    亲爱的小伙伴,对于数组javascript中的数组去重方法你知道多少种呢?学会如何对数组进行去重对于javascript的学习来说也是十分重要的,下边就让我来分享一下我所知道的集中数组去重的方法吧! ...

  7. JavaScript数组去重的五种方法

    JavaScript数组去重的五种方法 先简单准备一个数组,用于方法的实验: let array = [1,1,2,3,4,4,1,5,6,6,7,7,7]; console.log(`去重前的数组: ...

  8. JavaScript数组去重算法实例

    本文主要介绍了JavaScript数组去重算法,结合实例形式总结分析了JavaScript数组去重相关的读写.遍历.比较.排序等操作及算法改进相关实现技巧,需要的朋友可以参考下 测试用例: arr = ...

  9. JavaScript数组去重—ES6的两种方式

    说明 JavaScript数组去重这个问题,经常出现在面试题中,以前也写过一篇数组去重的文章,(JavaScript 数组去重的多种方法原理详解)但感觉代码还是有点不够简单,今天和大家再说两种方法,代 ...

最新文章

  1. R语言使用psych包进行探索性因子分析EFA、使用cov2cor函数将原始数据的协方差矩阵将其转换为相关性矩阵( covariance matrix into correlation matrix)
  2. Java的新项目学成在线笔记-day13(九)
  3. django-oscar-paypal出现UnicodeEncodeError: 'latin-1' codec can't encode characters in position XXXX
  4. 5G的场景、需求、通信速率
  5. MYSQL返回指定时间间隔函数DATE_SUB和TO_DAYS详解
  6. linux传输tcp命令,Linux tcpdump命令帮助和示例
  7. js获取日期实例之昨天今天和明天、后天
  8. 【Elasticsearch】倒排索引原理
  9. eclipse 输入卡顿_解决eclipse卡顿
  10. cogs 315. [POJ3255] 地砖RoadBlocks
  11. 寒冬不怕!印度互联网市场潜力巨大
  12. 【渝粤题库】陕西师范大学209004道德教育案例研究 作业 (高起专)
  13. 我参加NVIDIA Sky Hackathon 训练文件的路径设置
  14. jquery中的各种动画效果
  15. Java后端面试(四)
  16. 穆穆推荐-软件销售行业软件公司销售参考操作手册-之2-软件公司销售团队的组建及岗位分类
  17. 纳米材料与技术类毕业论文文献有哪些?
  18. jquery中的find()和next()的用法及区别
  19. Python 常用标准库介绍
  20. 设计模式 考试题+答案

热门文章

  1. ②你真的学会Java了吗?来自《卷Ⅰ》的灵魂提问
  2. 代码实现——MapReduce统计单词出现次数
  3. p批处理替换目录下文本中的字符串
  4. Centos7常用命令[挂载文件系统]
  5. [转]Paul Adams:为社交设计
  6. syslinux 制作多系统启动U盘
  7. Dubbo学习总结(4)——Dubbo基于Zookeeper实现分布式实例
  8. C#学习笔记(十三):I/O操作
  9. 【WebSocket初探 】
  10. as和强制类型转换的区别