当前位置: 首页 > news >正文

腾讯微信公众号友情链接seo

腾讯微信公众号,友情链接seo,web开发基础形考任务1答案,十堰做网站的公司面试前端必须准备的一个问题:怎样去掉Javascript的Array的重复项。据我所知,百度、腾讯、盛大等都在面试里出过这个题目。 这个问题看起来简单,但是其实暗藏杀机。 考的不仅仅是实现这个功能,更能看出你对计算机程序执行的深入理解…

面试前端必须准备的一个问题:怎样去掉Javascript的Array的重复项。据我所知,百度、腾讯、盛大等都在面试里出过这个题目。 这个问题看起来简单,但是其实暗藏杀机。 考的不仅仅是实现这个功能,更能看出你对计算机程序执行的深入理解。

    我总共想出了三种算法来实现这个目的:

1.

  1. Array.prototype.unique1 = function()
    {var n = []; //一个新的临时数组for(var i = 0; i < this.length; i++) //遍历当前数组
        {//如果当前数组的第i已经保存进了临时数组,那么跳过,//否则把当前项push到临时数组里面if (n.indexOf(this[i]) == -1) n.push(this[i]);}return n;
    }

     

  2. Array.prototype.unique2 = function()
    {var n = {},r=[]; //n为hash表,r为临时数组for(var i = 0; i < this.length; i++) //遍历当前数组
        {if (!n[this[i]]) //如果hash表中没有当前项
            {n[this[i]] = true; //存入hash表r.push(this[i]); //把当前数组的当前项push到临时数组里面
            }}return r;
    }

    3.

  3. Array.prototype.unique3 = function()
    {var n = [this[0]]; //结果数组for(var i = 1; i < this.length; i++) //从第二项开始遍历
        {//如果当前数组的第i项在当前数组中第一次出现的位置不是i,//那么表示第i项是重复的,忽略掉。否则存入结果数组if (this.indexOf(this[i]) == i) n.push(this[i]);}return n;
    }

     

    其中第1种和第3种方法都用到了数组的indexOf方法。此方法的目的是寻找存入参数在数组中第一次出现的位置。很显然,js引擎在实现这个方法的时候会遍历数组直到找到目标为止。所以此函数会浪费掉很多时间。 而第2中方法用的是hash表。把已经出现过的通过下标的形式存入一个object内。下标的引用要比用indexOf搜索数组快的多。

    为了判断这三种方法的效率如何,我做了一个测试程序,生成一个10000长度的随机数组成的数组,然后分别用几个方法来测试执行时间。 结果表明第二种方法远远快于其他两种方法。 但是内存占用方面应该第二种方法比较多,因为多了一个hash表。这就是所谓的空间换时间。  就是这个测试页面,你也可以去看看。

2010年10月7日更新:

根据hpl大牛的思路,我写了第四种方法:

4.

Array.prototype.unique4 = function()
{this.sort();var re=[this[0]];for(var i = 1; i < this.length; i++){if( this[i] !== re[re.length-1]){re.push(this[i]);}}return re;
}

 

    这个方法的思路是先把数组排序,然后比较相邻的两个值。 排序的时候用的JS原生的sort方法,JS引擎内部应该是用的快速排序吧。 最终测试的结果是此方法运行时间平均是第二种方法的三倍左右,不过比第一种和第三种方法快了不少。

转载于:https://www.cnblogs.com/LeoBoy/p/5994163.html

http://www.lbrq.cn/news/2359621.html

相关文章:

  • 自己的电脑做服务器搭建网站常州seo外包
  • 贵州手机网站建设免费创建网站
  • 那些使用vue做的网站seo神器
  • ecs搭建网站制作网页用什么软件
  • 网站建设seo基本要求电话百度
  • 广州卓天跨境电商网站关键词排名查询工具免费
  • 自助网站优化网站链接的方法
  • 丰台手机网站设计站长工具的使用seo综合查询排名
  • 网站推广合同模板关键词排名监控
  • 谁做广东11彩票网站产品软文模板
  • 做网站需要注意多少页曼联目前积分榜
  • 海口模板建站平台网络推广需要什么
  • 佛山用户网站建设百度入口网页版
  • 下载类网站做多久才有流量百度成都总部
  • 天津西青区地图山东seo推广公司
  • 做网站服务商百度在线识图查图片
  • 专做海外代购的网站铜陵seo
  • 男生做网站运营的前景百度24小时客服电话136
  • 网站建设新闻推广app有哪些
  • 北京市规划和建设委员会网站培训机构专业
  • asp.net 4.0网站开发与项目实战google 官网入口
  • 自己做的网站百度收索不到网站联盟
  • 做食品行业网站手机营销软件
  • 信阳网站开发建设公司黑帽seo优化推广
  • 网站建设公司哈seo综合查询中的具体内容有哪些
  • 企业网站建设 安全厦门做网站公司有哪些
  • 搜狐快站做的手机网站人力资源培训
  • 宝山做网站网络推广优化是干啥的
  • 网站用视频做背景音乐全网营销代运营
  • 网站前端建设报价单如何提高网站在百度的排名
  • C# --- 单例类错误初始化 + 没有释放资源导致线程泄漏
  • 基于 Python/PHP/Node.js 的淘宝 API 商品数据抓取开发教程
  • rustdesk远控电脑替代todesk,平替向日葵等软件
  • 计算机网络:(九)网络层(下)超详细讲解互联网的路由选择协议、IPV6与IP多播
  • Linux-【单体架构/分布式架构】
  • [AI8051U入门第三步]串口1使用-printf重定向(乱码解决办法)