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 相关文章推荐
JAVASCRIPT下判断IE与FF的比较简单的方式
Oct 17 Javascript
JavaScript入门教程(10) 认识其他对象
Jan 31 Javascript
event对象的方法 兼容多浏览器
Jun 27 Javascript
FireFox下XML对象转化成字符串的解决方法
Dec 09 Javascript
jQuery实现的支持IE的html滑动条
Mar 16 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
Jun 24 Javascript
javascript实现页面滚屏效果
Jan 17 Javascript
p5.js 毕达哥拉斯树的实现代码
Mar 23 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
Jun 28 Javascript
微信小程序实现省市区三级地址选择
Jun 21 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
Aug 06 Javascript
js基础语法与maven项目配置教程案例
Jul 15 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制作新闻系统的思路
2006/10/09 PHP
PHP+ajax 无刷新删除数据
2010/02/20 PHP
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
2013/07/01 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
Python中用format函数格式化字符串的用法
2015/04/08 Python
利用python的socket发送http(s)请求方法示例
2018/05/07 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
门卫班长岗位职责
2013/12/15 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
班级入场式解说词
2014/02/01 职场文书
python实现网络五子棋
2021/04/11 Python
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android