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函数
Dec 22 Javascript
调用jQuery滑出效果时闪烁的解决方法
Mar 27 Javascript
Node.js模块加载详解
Aug 16 Javascript
js使用for循环及if语句判断多个一样的name
Sep 09 Javascript
javascript基本类型详解
Nov 28 Javascript
以Python代码实例展示kNN算法的实际运用
Oct 26 Javascript
jQuery hover事件简单实现同时绑定2个方法
Jun 07 Javascript
AngularJS的ng Http Request与response格式转换方法
Nov 07 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
Apr 26 Javascript
五分钟搞懂Vuex实用知识(小结)
Aug 12 Javascript
Vue3为什么这么快
Sep 23 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 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中一个完整表单处理实现代码
2011/11/10 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
php变量范围介绍
2012/10/15 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
理解JavaScript表单的基础知识
2016/01/25 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
使用webpack将ES6转化ES5的实现方法
2019/10/13 Javascript
JS实现轮播图效果
2020/01/11 Javascript
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
python requests post多层字典的方法
2018/12/27 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
Python生成器常见问题及解决方案
2020/03/21 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
如何在Python对Excel进行读取
2020/06/04 Python
python 实现两个npy档案合并
2020/07/01 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
数控技术专业推荐信
2013/11/01 职场文书
外贸业务员岗位职责
2013/11/24 职场文书
社区党总支书记先进事迹材料
2014/01/24 职场文书
敬老院标语
2014/06/27 职场文书
平安家庭事迹材料
2014/12/20 职场文书
英文慰问信
2015/02/14 职场文书
诉讼和解协议书
2016/03/23 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书