一行代码实现数组去重,对一个数组进行去重

江奚瑶 数组去重和排序 2020-11-05 63浏览

int数组去重本文主要介绍了JavaScript数组重复数据消除的三种方法和代码示例。本文直接给出了示例代码。您可以为您的朋友参考许多阵列重复数据消除方法。哪一个是最理想的还超大数...

这篇文章主要介绍了JavaScript数组去重的3种方法和代码实例,本文直接给出实例代码,需要的朋友可以参考下数组去重的方法有很多,到底哪种是最理想的,自己不清楚。

于是自己测试了下数组去重的效果和性能。

测试十万个数据,代码和所耗大概时间如下。

到底采用哪种方法,根据实际情况而定吧。

?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768/*方法一:1,1会被认为是相同的;所有hash对象,如:{x;1},{y:1}会被认为是相同的//10ms*/Array.prototype.unique=function(){varnewArr=[],obj={};for(vari=0,len=this.length;ilen;i){if(!obj[this[i]]){newArr.push(this[i]);obj[this[i]]=true;}}returnnewArr;}/*方法一改进版:所有hash对象,如:{x;1},{y:1}会被认为是相同的//30ms*/Array.prototype.unique=function(){varnewArr=[],obj={};for(vari=0,len=this.length;ilen;i){if(!obj[typeof(this[i])this[i]]){newArr.push(this[i]);obj[typeof(this[i])this[i]]=this[i];}}returnnewArr;}/*方法二:去重结果最好,但耗性能//250ms*/Array.prototype.unique=function(){varnewArr=this.concat();for(vari=0,len=newArr.length;ilen;i){for(varj=i1,len=newArr.length;jlen;j){//注意===if(newArr[i]===newArr[j]){newArr.splice(j,1);j--;}}}returnnewArr;}/*方法三:不能去重hash对象//25ms*/Array.prototype.unique=function(){varnewArr=[];//一个新的临时数组for(vari=0,len=this.length;ilen;i){if(newArr.indexOf(this[i])==-1){//如果当前数组的第i已经保存进了临时数组,那么跳过,否则把当前项push到临时数组里面newArr.push(this[i]);}}returnnewArr;}vararr0=[11,21,221,13,24,134,1,{x:1,y:1},{name:pobaby,age:12,hobby:football},{name:pobaby1,age:121,hobby:football1},{x:134},{y:132},{x:143},{y:3421},神秘人物,火柴人技巧格斗,超音速战场,小小辛打砖块,火柴人技巧格斗,加菲猫超人,小小辛打砖块,卑鄙的我2,电流导线,飞天手推车,神D秘人物,火柴人S技巧格斗,超音SD速战场,小小SD辛打砖块,火柴人SD技巧格斗,加菲S猫超人,小小DF辛打砖块,卑鄙的FS我2,电D流导线,飞天SD手推车,神秘SD人物,火柴人技D巧格斗,超音ASD速战场,小小辛打SAD砖块,火柴人技SD巧格斗,加菲FDS猫超人,小小辛打SDF砖块,卑鄙SDF的我2,电流SDF导线,飞天手DF推车,神秘SD人物,火柴人技AS巧格斗,超音速战FS场,小小辛SDF打砖块,火柴人SDF技巧格斗,加菲SD猫超人,113,231,2221,123,234,1334,21,{x:13,y:132},{name:pobaby2,age:122,hobby:football2},{name:pobaby13,age:1231,hobby:football41},{x:13544},{y:1352},{x:14543},{y:34521},神秘人sd物,火柴人技sd巧格斗,超音速sd战场,小小辛sd打砖块,火柴人技巧gw格斗,加菲猫ui超人,小小辛yi打砖块,卑鄙的yi我2,电流yt导线,飞天手ytui推车,神Dyu秘人物,火yui柴人S技yui巧格斗,超音SDyu速战场,小小SD辛打砖uyi块,火柴yui人SD技巧格斗,加yui菲S猫超人,小小DF辛打砖ui块,卑鄙uyi的FS我2,电D流导yui线,飞天SD手推uyi车,神i秘SD人物,火柴人技Dhk巧格斗,超音ASD速战hk场,小小辛打SAhkD砖块,火柴人技SD巧ghk格斗,加菲FDS猫k超人,小小辛打SDF砖ytui块,卑鄙SDF的yui我2,电流SDyuF导线,飞天手yuiDF推车,神iy秘SD人hk物,火柴uyi人技AS巧格hk斗,超音hg速战FS场,小小辛SDF打砖hjk块,火柴人SDF技hj巧格斗,加菲SDhk猫超人];/*十万个随机数据*/vararr=[],num;for(vari=0;i100000;i){num=Math.floor(Math.random()*50);arr.push(arr0[num]);}vart1=newDate().getTime();console.log(t1);//开始时间arr.unique();//去重vart2=newDate().getTime();console.log(t2);//结束时间console.log(t2-t1);

相关阅读

  • 华为手机坏了该怎么选择,第三方维修还是官方售后
  • win11马上就要来了吗,这个系统会更好用吗
  • 办公室电脑如何连接共享打印机 新电脑如何连接办公室打印机
  • 电脑搜索不到共享的打印机怎么办 电脑搜索不到共享打印机怎么操作
  • 笔记本电脑可以外接摄像头吗 笔记本电脑外接摄像头
  • 笔记本电脑怎么变快 笔记本电脑怎么变快不卡
  • 电脑摄像头旁边的灯一直亮着 没有自拍灯电脑摄像头亮着的原因
  • word怎么输入箭头符号 word怎么输入箭头
  • word目录怎么生成 word目录怎么生成页码
  • word文档怎么设置底色 word文档怎么设置底色打印
  • 版权声明

    原标题:js数组去重的方法
    本文网址:http://www.41718.net/article/28027.html
    猜你感兴趣: 数组去重和排序 , java数组去重大小排序 , string数组去重方法 , 数组去重实现 ,

    2条评论