具体方法请看下面代码,每种方法都附带了解释,大家可以自己在本网站的在线代码调试工具中运行一下每种方法。
<code class="javascript">/*方法一: 1,'1' 会被认为是相同的; 所有hash对象,如:{x;1},{y:1}会被认为是相同的 //10ms */
Array.prototype.unique=function(){
var newArr=[],obj={};
for(var i=0,len=this.length;i<len;i++){
if(!obj[this[i]]){
newArr.push(this[i]);
obj[this[i]]=true;
}
}
return newArr;
}
/*方法一改进版:所有hash对象,如:{x;1},{y:1}会被认为是相同的 //30ms*/
Array.prototype.unique=function(){
var newArr=[],obj={};
for(var i=0,len=this.length;i<len;i++){
if(!obj[typeof(this[i])+this[i]]){
newArr.push(this[i]);
obj[typeof(this[i])+this[i]]=this[i];
}
}
return newArr;
}
/*方法二: 去重结果最好,但耗性能 //250ms*/
Array.prototype.unique=function(){
var newArr=this.concat();
for(var i=0,len=newArr.length;i<len;i++) {
for(var j=i+1,len=newArr.length;j<len;j++) {
//注意 ===
if(newArr[i]===newArr[j]) {
newArr.splice(j,1);
j--;
}
}
}
return newArr;
}
/*方法三: 不能去重hash对象 //25ms */
Array.prototype.unique = function(){
var newArr = []; //一个新的临时数组
for(var i = 0,len=this.length; i < len; i++){
if (newArr.indexOf(this[i]) == -1){ //如果当前数组的第i已经保存进了临时数组,那么跳过,否则把当前项push到临时数组里面
newArr.push(this[i]);
}
}
return newArr;
}
var arr0=[11,21,221,13,24,"134","1",{x:1,y:1},{name:"pobaby",age:"12",hobby:"football"},{name:"pobaby1",age:"121",hobby:"football1"}];
/*十万个随机数据*/
var arr=[],num;
for(var i = 0; i < 100000; i++){
num=Math.floor(Math.random()*50);
arr.push(arr0[num]);
}
var t1= new Date().getTime(); console.log(t1); //开始时间
arr.unique(); //去重
var t2 = new Date().getTime(); console.log(t2); //结束时间
console.log(t2-t1);</code>
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号