常见的包括三类:暴力式嵌套遍历,先排序后遍历,词典式一次遍历。

这里只贴代码吧。可直接放在浏览器的控制台运行。详细的介绍文章(含参考文章的链接)在  http://borninsummer.com/blog/2013/12/09/javascript-array-unique/


// 用于生成一个随机数
// m: 下限, n:上限
function random(m,n){ var i=Math.random(); return Math.round((n-m)*i+m);
} // 生成一个随机数组
// l:希望生成的数组的长度
function getRandomArr(m,n,l){ var resultArr=[]; for(var i=0;i<l;i++){ resultArr.push(random(m,n));} return resultArr;
}// 两次遍历,实在太慢了
// 可以称为最高复杂度算法了吧~
function delrep1() {var res = [];this.forEach(function(v) {if (res.indexOf(v) == -1) res.push(v);})  return res;
}// 先排序后遍历的去重算法,这里简单地使用内置sort()方法,会有浏览器差异
// 更好的情况下,例如在服务器端,应该使用自己实现的快速排序或者其他排序方法
// 因为客户端JS会考虑代码体积问题,而服务器端则主要考虑性能
// sort()排序
function delrep2(){this.sort(function(a,b){return a-b});    //先排序var res = [this[0]];for(var i = 1; i < this.length; i++){if(this[i] !== res[res.length - 1]){res.push(this[i]);}}return res;
}// 不考虑类型的词典法
// 如果确认数组全部由数字组成,就应该使用这个方法,因为 typeof()运算也是要耗时间的
function delrep3() {var obj = {},res = [] ;this.forEach(function(v){if (!obj[v]) {obj[v] = true;res.push(v);}});return res ;
}// 区分类型的词典法
function delrep4() {var obj = {},res = [] ;this.forEach(function(v){if (!obj[typeof(v) + v]) {obj[typeof(v) + v] = true;res.push(v);}});return res ;
}// 传入一个函数需要的参数,运行该函数,并输出运行时间,单位是毫秒
function readClock(func,arr){var start = +new Date();var res = func.call(arr);console.log(+new Date() - start);console.log(res.slice(0,10));
}var arr = getRandomArr(0,9999,30000);
readClock(delrep1,arr);
readClock(delrep2,arr);
readClock(delrep3,arr);
readClock(delrep4,arr);

JavaScript数组去重方法整理相关推荐

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

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

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

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

  3. javascript数组去重方法汇总

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

  4. Javascript数组去重方法

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

  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. UA MATH523A 实分析3 积分理论例题 控制收敛定理计算一元积分的极限
  2. linux常用网络命令
  3. WSL2 支持挂载物理磁盘,Windows 可直接访问 ext4
  4. Java描述设计模式(21):状态模式
  5. Java实现ActiveMQ之主题的生产者和消费者(二)
  6. zabbix mysql 平台_监控平台-zabbix
  7. 第41天:匀速、缓动运动和图片无缝滚动
  8. st.getParameter() 和request.getAttribute() 区别 https://terryjs.iteye.com/blog/1317610
  9. Java多线程售票一张票多买问题
  10. 【高手分享】熟知Win7系统(英文版)分区14个小步骤
  11. VMware vRealize Suite 8.8.0
  12. Kubernetes Pod 健康检查机制 LivenessProbe 与 ReadinessProbe
  13. 线性代数笔记【空间向量】
  14. 关闭vscode中的eslint语法检查
  15. mysql 异常码1903_Mysql 异常。 寻求帮助
  16. LeetCode/LintCode 题解丨一周爆刷双指针: 两数之和
  17. Kotlin上的反应式流-SharedFlow和StateFlow
  18. FAT12模拟-C语言读取
  19. 什么是TOR 官方文档
  20. linux体系结构+linux内核结构+linux内核目录结构

热门文章

  1. python: nonzero()函数
  2. 成为自由开发者的第100天,来一波拼团活动!
  3. 安装Ansys Electroincs2022时出现了下面的问题:
  4. 步步为营 .NET 设计模式学习笔记 七、Proxy(代理模式)
  5. 日紫白飞星算法_陈春林|紫白飞星排布技巧
  6. YAPF —— Python代码格式化工具
  7. 在uniapp中使用VantUI组件库(微信版)
  8. AUTOCAD——坐标轴固定、CAD使用环形阵列绘制图形
  9. WaitForSingleObject函数用法
  10. python怎么切割字符串_python如何切割字符串