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

测试用例:

arr = ["1",3,"1",1,4,5,1,"2",5,1,{"name":"li","age":20},2,4,3,{"name":"li","age":20},""];
复制代码

方法一:借助于临时数组与indexOf , 算法复杂度为:O(n^2)

function unique1(arr){var temp = [];for(var i=0; i<arr.length; i++){if(temp.indexOf(arr[i]) == -1){temp.push(arr[i]);}}return temp;
}
复制代码

测试结果:

unique1(arr) : ["1", 3, 1, 4, 5, "2", Object { name="li", age=20}, 2, Object { name="li", age=20}, ""]
复制代码

bug 无法区分对象 方法二 : 用JavaScript中的Object对象来当作hash表

function unique2(arr){var temp=[];var hash={};for(var i=0; i<arr.length;i++){if(!hash[arr[i]]){hash[arr[i]]=true;temp.push(arr[i]);}}return temp;
}//欢迎加入全栈开发交流圈一起学习交流:864305860
复制代码

测试结果:

unique2(arr) : ["1", 3, 4, 5, "2", Object { name="li", age=20}, ""]
复制代码

bug : 无法区分: 1 和 "1" 修改

function unique2(arr){var temp=[];var hash={};for(var i=0; i<arr.length;i++){var item = arr[i];var key = typeof(item)+item;if(!hash[key]){hash[key]=true;temp.push(arr[i]);}//欢迎加入全栈开发交流圈一起学习交流:864305860}//面向1-3年前端人员return temp;//帮助突破技术瓶颈,提升思维能力
}
复制代码

测试结果:

unique2(arr) : ["1", 3, 1, 4, 5, "2", Object { name="li", age=20}, 2, ""]
复制代码

方法三:先用sort对数组排序,然后借助临时数组,存储相同元素的最后一个,该方法只能用于纯Number类型数组

function unique3(arr){arr.sort(function(a,b){return a-b;});var temp = [];for(var i=0;i<arr.length;i++){if(arr[i] !== arr[i+1]){temp.push(arr[i]);}}//欢迎加入全栈开发交流圈一起学习交流:864305860return temp;//面向1-3年前端人员
}//帮助突破技术瓶颈,提升思维能力
复制代码

结语

感谢您的观看,如有不足之处,欢迎批评指正。

本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。 对web开发技术感兴趣的同学,欢迎加入Q群:864305860,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。 最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

JavaScript数组去重算法实例相关推荐

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

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

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

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

  3. JS数组去重算法实现

    1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方 ...

  4. python:实现数组去重算法(附完整源码)

    python:实现数组去重算法 ls = [8,2,5,4,4,5,5] ls.sort() ls1 = [ls[

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

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

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

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

  7. java数组去重_再谈JavaScript数组去重

    JavaScript的数组去重是一个老生常谈的话题了.随便搜一搜就能找到非常多不同版本的解法. 细想一下,这样一个看似简单的需求,如果要做到完备,涉及的知识和需要注意的地方着实不少. 定义重复(相等) ...

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

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

  9. javascript数组 去重

    数组去重的方法有很多,到底哪种是最理想的,自己不清楚.于是自己测试了下数组去重的效果和性能.测试十万个数据,代码和所耗大概时间如下. 到底采用哪种方法,根据实际情况而定吧. /*方法一: 1,'1' ...

最新文章

  1. linux 共享内存函数封装,linux ftok()函数 --多进程IPC之共享内存
  2. 从零开始一起学习SLAM | 为什么要用齐次坐标?
  3. day2 字符编码、列表、元组、字符串操作、字典
  4. 《深入理解Java虚拟机》-----第3章 垃圾收集器与内存分配策略
  5. C++ string中find ,rfind 等函数 用法总结及示例
  6. 大道至简——失败也是积累
  7. C 语言的可变参数表函数的设计
  8. 【知识积累】DES算法之C#加密Java解密
  9. 【HDU - 1968】【UVA - 12096】The SetStack Computer (模拟,集合求交集并集操作,STL实现)
  10. Linux 高可用(HA)集群之keepalived
  11. LevelDb实现原理
  12. “开源社区运营就像种菜”,黄东旭谈开源商业化 | 独家
  13. 【BZOJ1061/3265】[Noi2008]志愿者招募/志愿者招募加强版 单纯形法
  14. Android.mk 使用 环境 小结
  15. 基于JAVA的超市库存管理系统
  16. 解决苹果电脑OS X 10.8.5或10.7.5 老版本系统升级问题
  17. Unity3D中UGUI的RectTransform对齐方式详解
  18. 碧光の鎌使い(シュゼット) / 碧镰(异时层中二)
  19. ppt在线快速转换成pdf的方法
  20. 面试时自我介绍最强参考卷

热门文章

  1. linux开始时间and结束时间,Linux NTP configure and Hangcheck-time
  2. android 判断手机计步_干货:电脑控制手机 一定不能错过的神器
  3. delphi 实现屏幕旋转代码_Cocos Creator模拟射箭效果 | 附代码
  4. php e all e notic,error_reporting(E_ALL ^ E_NOTICE)详细说明 | 慢生活的记忆
  5. java 修饰符作用_Java关键字修饰符的作用范围
  6. python做的项目管理软件_幽雅的使用Python之软件管理
  7. python红色_python把红玫瑰变成蓝色女巫,将,红色,转化,为,蓝色妖姬
  8. Python的regex模块——更强大的正则表达式引擎
  9. git分支操作的成功案例
  10. kaggle中的MAP理解