文档章节

去掉数组中重复的元素

歌颂_大海
 歌颂_大海
发布于 2017/09/04 10:53
字数 237
阅读 2
收藏 0
function unique1(arr){
      //i从0开始遍历arr,同时创建空数组result
      for(var i=0,result=[];i<arr.length;i++){
        //j从0开始,遍历result
        for(var j=0;j<result.length;j++){
          //如果result中当前元素等于arr中当前元素
          if(arr[i]==result[j]) break;//退出循环 
        }//(遍历结束)
        //如果j等于result的length
        if(j==result.length)
          //将arr中当前元素,追加到result末尾
          result[result.length]=arr[i];
      }//(遍历结束)
      return result;
    }
function unique2(arr){
 for(var i=0,result=[],hash=[];i<arr.length;i++){
    //如果hash中以arr当前元素作为key的元素是undefined
    if(hash[arr[i]]===undefined){
      //将arr当前元素追加到result结尾
      result[result.length]=arr[i];
      //为hash添加新元素,key为arr当前元素值,value都赋值为true
      hash[arr[i]]=true;
    }
 }
 return result;
}
for(var i=0,arr=[];i<1000000;i++){
      arr[i]=Math.floor(Math.random()*1000);
    }
    console.time("unique1");
    unique1(arr);
    console.timeEnd("unique1");
    console.time("unique2");
    unique2(arr);
    console.timeEnd("unique2");

对两种查找方式进行比较,第二种用时更少

© 著作权归作者所有

共有 人打赏支持
歌颂_大海
粉丝 0
博文 1
码字总数 237
作品 0
驻马店
程序员
私信 提问
用HashSet查找两个int数组中的相同元素

其实用两个循环嵌套就可以实现,但这里只是为了演示HashSet的去重功能。 import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; impo...

JAVA_NINA
2011/01/07
0
0
第三章 数组相关操作

编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间。 2. 编写一个循环,将整数数组中相邻的元素置换。例如,Array(1,2,3,4,5)经过置换后变为Array(2,1,4...

小萝卜_
2016/06/08
39
0
ruby的Array总结

ruby的Array总结 2010-12-28 11:25:54| 分类: Ruby/Rails|字号 订阅 Array 作为一个类,其中方法有:(简单的就不想说明了,仅作参考)

BinYang
2012/11/01
0
0
jQuery Utilities

$.each(object,function(name,value){}),用于遍历对象和数组。 $.each( [0,1,2], function(i, n){alert( "Item #" + i + ": " + n );});$.each( { name: "John", lang: "JS" }, function(i......

梵高
2011/08/15
0
0
for in 和 for,以及getElementsByTagName('*')

由于原生js中,没有能通过class获取元素的方法,OK,来,自己写 正在我沾沾自喜的时候,尼玛,出幺蛾子了 页面结构是这样的 我了个擦,返回了一个8个元素的数组,有木有,好难过,这不是我想...

DennisHill
2016/12/27
2
0

没有更多内容

加载失败,请刷新页面

加载更多

虚拟化 - KVM 和 Xen 比较

Linux虚拟化技术的用户目前有两种免费的开源管理程序可以选择:Xen和KVM。 作为较早出现的虚拟化技术,Xen是“第一类”运行在裸机上的虚拟化管理程序(Hypervisor),也是当前相当一部分商业...

临江仙卜算子
27分钟前
1
0
给windows server中的“未识别的网络”或“无法识别的网络”设置网络位置类型

在windows server中,如果网络没有被正确的识别,那么就需要手工设置一下网络位置类型。 将“公用网络”指定设置为“专用网络“ 【控制面板】--【系统和安全】--【管理工具】--【本地安全策略...

gugudu
今天
2
0
阿里强制要求的21条Java开发规范,可以避免很多坑

1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。 2. 【强制】所有的覆写方法,必须加@Override注解。 说明:getObject...

天王盖地虎626
今天
10
0
oracle dg 备库未设置convert参数导致ORA-01111,ORA-01110

查看trace 文件: MRP0: Background Managed Standby Recovery process started (amls) started logmerger process Sun Jan 20 07:55:53 2019 Managed Standby Recovery starting Real Time ......

hnairdb
今天
2
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linux-tao
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部