javascript数字数组去重复项的实现代码


Posted in Javascript onDecember 30, 2010

test.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>array-remove-repeate</title> 
<style> 
.tt{ background-color:#006699; height:3px; overflow:hidden;} 
</style> </head> 
<body> 
<div class="tt"></div> 
<div class="result" id="result"></div> 
<script> 
if(!console) 
{ 
var console={}; 
console.log=function(str){alert(str);} 
} 
Array.prototype.unique1 = function () { 
var r = new Array(); 
label:for(var i = 0, n = this.length; i < n; i++) { 
for(var x = 0, y = r.length; x < y; x++) { 
if(r[x] == this[i]) { 
continue label; 
} 
} 
r[r.length] = this[i]; 
} 
return r; 
} 
Array.prototype.unique2 = function () { 
return this.sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(","); 
} 
Array.prototype.unique3 = function() { 
var temp = {}, len = this.length; 
for(var i=0; i < len; i++) { 
var tmp = this[i]; 
if(!temp.hasOwnProperty(tmp)) { 
temp[this[i]] = "my god"; 
} 
} 
len = 0; 
var tempArr=[]; 
for(var i in temp) { 
tempArr[len++] = i; 
} 
return tempArr; 
} 
Array.prototype.unique4 = function () { 
var temp = new Array(); 
this.sort(); 
for(i = 0; i < this.length; i++) { 
if( this[i] == this[i+1]) { 
continue; 
} 
temp[temp.length]=this[i]; 
} 
return temp; 
} 

var test=(function() 
{ 
var arr2=[]; 
for(var i=0;i<2000;i++) 
{ 
var t=i; 
t=parseInt(Math.random()*2000)+1; 
arr2[i]=(t.toString()); 

} 
//arr2=["zhoujian","zhou","zhou"]; 
return function(){ 
return arr2; 
//return [1,2,3,3]; 
}; 

})(); 
window.onload=function(){ 

// 
Watch.start("Cost times1:"); 
var arr= test(); 
console.log(arr.length ); 
arr=arr.unique1(); 
console.log(arr.length); 
Watch.stop(); 
// 
Watch.start("Cost times2:"); 
arr= test(); 
console.log(arr.length); 

arr=arr.unique2(); 
console.log(arr.length); 
Watch.stop(); 
// 
Watch.start("Cost times3:"); 
arr= test(); 
console.log(arr.length ); 
arr=arr.unique3();//数组很大时,最快 
console.log(arr.length ); 
Watch.stop(); 
// 
Watch.start("Cost times4:"); 
arr= test(); 
console.log(arr.length); 
arr=arr.unique4(); 
console.log(arr.length); 
Watch.stop(); 
Watch.report(); 
} 
</script> 
</body> 
</html>

Watch.js
var Watch = { 
result: [], 
guid: -1, 
totalTime: 0, 
start: function(title){ 
this.result[++this.guid] = [title || this.guid, new Date().getTime()]; 
}, 
stop: function(){ 
var r = this.result[this.guid]; 
var t = new Date().getTime() - r[1]; 
this.totalTime += t; 
r[1] = t; 
if(t>=10000){ 
alert("This code takes too long to run,you should optimizate them."); 
} 
}, 
report: function(parent){ 
var div = document.createElement("div"); 
div.style.fontSize = "12px"; 
var str = []; 
str.push("<p><b>The total times:</b><span style='color:#f00'>" + this.totalTime + "</span> ms.</p>"); 
for (var i = 0, l = this.result.length; i < l; i++) { 
if (this.result[i].length > 1) { 
str.push("<p>" + "<span style='width:200px;display:inline-block;background-color:#f7f7f7;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;'>"+"<span style='background-color:#0c0; -moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;width=" + (this.totalTime === 0 ? this.totalTime : parseInt(200 * this.result[i][1] / this.totalTime)) + "px; display:inline-block;'>"+this.result[i][1]+"</span>"+"</span> <span style='width:150px; display:inline-block;'>" + this.result[i][0] + "</span>" + "</p>"); 
}else{ 
str.push(this.result[i][0]); 
} 
} 
div.innerHTML = str.join(""); 
parent = parent || document.body; 
parent.appendChild(div); 
div = null; this.totalTime = 0; 
this.guid = -1; 
this.result=[]; 
}, 
fns: function(){ 
var a = arguments; 
for (var i = 0, l = a.length; i < l; i++) { 
this.start(a[i][0]); 
a[i][1](); 
this.stop(); 
} 
}, 
execByTimes: function(fn, times, title){ 
this.start(title); 
while (times--) { 
fn(); 
} 
this.stop(); 
}, 
print: function(str){ 
this.result[++this.guid]=[str]; 
} 
}
Javascript 相关文章推荐
js jquery做的图片连续滚动代码
Jan 06 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
Jun 25 Javascript
js 控制页面跳转的5种方法
Sep 09 Javascript
ES6中如何使用Set和WeakSet
Mar 10 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
Apr 17 Javascript
js友好的时间返回函数
Aug 24 Javascript
JS命令模式例子之菜单程序
Oct 10 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
Jul 12 jQuery
详解可以用在VS Code中的正则表达式小技巧
May 14 Javascript
微信小程序实现授权登录
May 15 Javascript
Vue实现多标签选择器
Nov 28 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
Dec 04 Javascript
ExtJs的Date格式字符代码
Dec 30 #Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
Dec 30 #Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
Dec 30 #Javascript
在VS2008中使用jQuery智能感应的方法
Dec 30 #Javascript
jQuery在vs2008及js文件中的无智能提示的解决方法
Dec 30 #Javascript
js TextArea的选中区域处理
Dec 28 #Javascript
基于jquery的一行代码轻松实现拖动效果
Dec 28 #Javascript
You might like
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
javascript 解决表单仍然提交即使监听处理函数返回false
2010/03/14 Javascript
JavaScript 的继承
2011/10/01 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
python中urllib模块用法实例详解
2014/11/19 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
Python zip()函数用法实例分析
2018/03/17 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
详解python程序中的多任务
2020/09/16 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
音乐系毕业生自荐信
2013/10/27 职场文书
儿童生日会策划方案
2014/05/15 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
创先争优宣传标语
2014/10/08 职场文书
2015年班组长工作总结
2015/04/10 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书