删除数组条目中重复的条目(可能有多个),返回值是一个仅包含被删除的重复条目的新数组。_javascript技巧

今日在bluediea看到淘宝在线招聘,相信淘宝的技术还是很牛的,于是赶紧打开看看题目并试着做做。
到了第三题时卡了偶老半天,并不是做不出来,感觉有很简便的方法但自己就是一时想不出来,不过费了九牛二虎之力终于完成本题,给出了一个另自己还比较满意的答案,欢迎各位朋友指点!

题目如下:
请给Array本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),返回值是一个仅包含被删除的重复条目的新数组。

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

复制代码 代码如下:

Array.prototype.delRepeat=function() 
  { 
        var tmpArr=[],rs=[],i,val; 
        for(i=this.length;i>0;i--) 
    { 
            val = this[i-1]; 
      if(!tmpArr[val]) 
      { 
                tmpArr[val]=1; 
            }else 
      { 
                rs.push(val); 
          this.splice(i-1,1); 
            } 
        } 
    tmpArr = null; 
        return rs; 
    } 

两个优点:
1、预先将this[i-1]保存在变量val中,减少访问次数。
2、使用array.push方法,替换用变量保存数组长度的办法。

很好!赞一个!
偶还顺便实现了对返回重复项的过滤,可能是对题意理解有偏差。

时间: 2024-12-07 12:34:41

删除数组条目中重复的条目(可能有多个),返回值是一个仅包含被删除的重复条目的新数组。_javascript技巧的相关文章

sqlserver-用 Isnumeric判断从SQLServer中取出的数据类型为numeric的数据返回值是False是为什么

问题描述 用 Isnumeric判断从SQLServer中取出的数据类型为numeric的数据返回值是False是为什么 之前在sybase环境时使用的是自动采番功能,现在移到SQLServer环境就想用取得最大值然后加一的方法实现插入. 因为本来就有写好的取得最大值的函数所以就拿来直接用了,在+1之前要用Isnumeric()判断是否为数字. Isnumeric(从数据库取出的值) 用response.write显示从数据库取出来的值是3565613, 用response.write Isnu

急求 在火狐浏览器中取不到一般处理程序.ashx的返回值

问题描述 在火狐浏览器中取不到一般处理程序.ashx的返回值但在IE中可以..求哪位大侠指点 解决方案 解决方案二:和服务器端有什么关系.应该是你客户端取值的代码的问题.解决方案三:用firebug看看响应数据,应该是你前端代码问题吧

指针-关于二维数组a中,a[1] 与 &a[1]相等的一个疑问?(从来没弄懂)

问题描述 关于二维数组a中,a[1] 与 &a[1]相等的一个疑问?(从来没弄懂) 对二维数组a[][]来说,a[1] 与 &a[1]相等.我来分析一下我的误解: 首先,a[m] 里面的内容是一个一维数组的首地址. 而 &a[m] 是 a[m] 的地址,它们相等. 说明 a[m] 的内容其实就是他本身的地址编号 (把 a[m] 看成一个变量) 对于一个内容就是地址的变量m,&m 与 m 相等 毋庸置疑. 然而 &a[m][0] 也等于 a[m] 说明 a[m][0]

JavaScript中的Reflect对象详解(ES6新特性)_javascript技巧

Reflect介绍: Reflect这个对象在我的node(v4.4.3)中还没有实现, babel(6.7.7)也没有实现 ,新版本的chrome是支持的, ff比较早就支持Proxy和Reflect了,要让node支持Reflect可以安装harmony-reflect ; Reflect不是构造函数, 要使用的时候直接通过Reflect.method()调用, Reflect有的方法和Proxy差不多, 而且多数Reflect方法原生的Object已经重新实现了. 什么要使用Reflect

javascript 获取所有id中包含某关键字的控件的实现代码_javascript技巧

//获取某容器控件中id包含某字符串的控件id列表 //参数:容器控件.要查找的控件的id关键字.要查找的控件的标签名称 //返回值:查找到的控件id列表字符串,以逗号分割. 复制代码 代码如下: function GetIdListBySubKey(container,subKey,TagName) { var idList = ""; for(var i = 0; i < container.childNodes.length;i++) { if(container.chil

C#中调用消息对话框,并取得其返回值

对话框 不同于VB中可以直接使用MsgBox来得到消息框的返回值,在C#中需要使用 DialogResult 类型的变量,从MessageBox.show()方法接受消息对话框的返回值.至于MessageBox.show()的返回值是 Yes .No, Ok还是Cancel,那需要自己在Show()方法中对它可以显示的选择按钮进行设置.以下示例代码可以参考: // Initializes the variables to pass to the MessageBox.Show method. s

火狐中静态html取不到.ashx的返回值但.aspx中可以取到 跪求大侠

问题描述 <scripttype="text/javascript"language="javascript">functionDQC_httpRequest(url,func){varhttp_request;if(window.XmlHttpRequest){//非IE浏览器xmlHttp=newwindow.XMLHttpRequest();http_request=newwindow.XMLHttpRequest();}elseif(window

android webview中使用Java调用JavaScript方法并获取返回值

在android平板上用webview打开一个网页,调用里面的javascript方法,同时相互传参. 网上例子很少啊,基本都不能获取返回值,贴一个自己最后调试完的代码如下: Java: 复制代码 代码如下: protected void onCreate(Bundle savedInstanceState) { ........ x = (WebView)this.findViewById(R.id.webView_viewTable); x.setScrollBarStyle(View.SC

url传递的参数值中包含&amp;时,url自动截断问题的解决方法_javascript技巧

一.问题的引出 在做一个公告浏览功能时,只要通过url传递的某参数值中包含 & 或  ,就会出现问题--该变量的值无法显示. 问题定位结果: 遇到&时,该参数的值会自动截断,导致参数值传递有误. 二.问题的解决 java代码中做如下测试: String  charEncode = java.net.URLEncoder.encode("&"); System.out.println("字符& 转译后的值为:" + charEncode