JavaScript数组去重算法实例
本文主要介绍了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数组去重算法实例相关推荐
- 六种方法实现JavaScript数组去重
tip:有问题或者需要大厂内推的+我脉脉哦:丛培森 ٩( 'ω' )و [本文源址:http://blog.csdn.net/q1056843325/article/details/73277063 ...
- JavaScript数组去重—ES6的两种方式
说明 JavaScript数组去重这个问题,经常出现在面试题中,以前也写过一篇数组去重的文章,(JavaScript 数组去重的多种方法原理详解)但感觉代码还是有点不够简单,今天和大家再说两种方法,代 ...
- JS数组去重算法实现
1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方 ...
- python:实现数组去重算法(附完整源码)
python:实现数组去重算法 ls = [8,2,5,4,4,5,5] ls.sort() ls1 = [ls[
- JavaScript 数组去重方法合集(简洁易懂)
JavaScript数组去重 JavaScript去重的七种方法 简单易懂 方法一:暴力去重法 // 暴力去重法 function ArrayIsUnique (array) {if (!Array. ...
- JavaScript数组去重的五种方法
JavaScript数组去重的五种方法 先简单准备一个数组,用于方法的实验: let array = [1,1,2,3,4,4,1,5,6,6,7,7,7]; console.log(`去重前的数组: ...
- java数组去重_再谈JavaScript数组去重
JavaScript的数组去重是一个老生常谈的话题了.随便搜一搜就能找到非常多不同版本的解法. 细想一下,这样一个看似简单的需求,如果要做到完备,涉及的知识和需要注意的地方着实不少. 定义重复(相等) ...
- javascript数组去重方法性能测试比较
昨天参加的一个前端面试,其中有一题数组去重,首先想到的是对象存键值的方法,代码如下 方法一:(简单存键值) Array.prototype.distinct1 = function() {var i= ...
- javascript数组 去重
数组去重的方法有很多,到底哪种是最理想的,自己不清楚.于是自己测试了下数组去重的效果和性能.测试十万个数据,代码和所耗大概时间如下. 到底采用哪种方法,根据实际情况而定吧. /*方法一: 1,'1' ...
最新文章
- linux 共享内存函数封装,linux ftok()函数 --多进程IPC之共享内存
- 从零开始一起学习SLAM | 为什么要用齐次坐标?
- day2 字符编码、列表、元组、字符串操作、字典
- 《深入理解Java虚拟机》-----第3章 垃圾收集器与内存分配策略
- C++ string中find ,rfind 等函数 用法总结及示例
- 大道至简——失败也是积累
- C 语言的可变参数表函数的设计
- 【知识积累】DES算法之C#加密Java解密
- 【HDU - 1968】【UVA - 12096】The SetStack Computer (模拟,集合求交集并集操作,STL实现)
- Linux 高可用(HA)集群之keepalived
- LevelDb实现原理
- “开源社区运营就像种菜”,黄东旭谈开源商业化 | 独家
- 【BZOJ1061/3265】[Noi2008]志愿者招募/志愿者招募加强版 单纯形法
- Android.mk 使用 环境 小结
- 基于JAVA的超市库存管理系统
- 解决苹果电脑OS X 10.8.5或10.7.5 老版本系统升级问题
- Unity3D中UGUI的RectTransform对齐方式详解
- 碧光の鎌使い(シュゼット) / 碧镰(异时层中二)
- ppt在线快速转换成pdf的方法
- 面试时自我介绍最强参考卷
热门文章
- linux开始时间and结束时间,Linux NTP configure and Hangcheck-time
- android 判断手机计步_干货:电脑控制手机 一定不能错过的神器
- delphi 实现屏幕旋转代码_Cocos Creator模拟射箭效果 | 附代码
- php e all e notic,error_reporting(E_ALL ^ E_NOTICE)详细说明 | 慢生活的记忆
- java 修饰符作用_Java关键字修饰符的作用范围
- python做的项目管理软件_幽雅的使用Python之软件管理
- python红色_python把红玫瑰变成蓝色女巫,将,红色,转化,为,蓝色妖姬
- Python的regex模块——更强大的正则表达式引擎
- git分支操作的成功案例
- kaggle中的MAP理解