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 相关文章推荐
eval与window.eval的差别分析
Mar 17 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
Jan 27 Javascript
js实现上传图片之上传前预览图片
Mar 25 Javascript
js实现广告漂浮效果的小例子
Jul 02 Javascript
获得Javascript对象属性个数的示例代码
Nov 21 Javascript
javascript里使用php代码实例
Dec 13 Javascript
js实现遮罩层弹出框的方法
Jan 15 Javascript
老生常谈 关于JavaScript的类的继承
Jun 24 Javascript
老生常谈 js中this的指向
Jun 30 Javascript
原生js实现新闻列表展开/收起全文功能
Jan 20 Javascript
浅谈vue2 单页面如何设置网页title
Nov 08 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
May 08 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数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
2011/03/03 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
javascript制作sql转换为stringBuffer的小工具
2015/04/03 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
python递归计算N!的方法
2015/05/05 Python
windows系统下Python环境搭建教程
2017/03/28 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
python装饰器的特性原理详解
2019/12/25 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
主持人演讲稿范文
2013/12/28 职场文书
中药专业毕业自荐书范文
2014/02/08 职场文书
简历中自我评价怎么写
2014/02/12 职场文书
大学自主招生推荐信
2014/05/10 职场文书
购房意向书
2014/08/30 职场文书
学生会干部任命书
2015/09/21 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python