数组去重的几种方式及时间比较(沙老师课堂)

/**全部的去重方法及其比较****/
Array.prototype.qc1=function(){ //删除后面
var rs=[]
for(var i=0;i<this.length;i++){
for(var k=0;k<rs.length;k++){
if(this[i]==rs[k]){
i++;
k=0;
}
}
(i<this.length)&&rs.push(this[i])
}
return rs;
}
Array.prototype.qc2=function(){ //删除前面
var rs=[]
for(var i=0;i<this.length;i++){
for(var k=i+1;k<this.length;k++){
if(this[i]==this[k]){
k=++i;
}
}
rs.push(this[i])
}
return rs;
}
Array.prototype.qc3=function(){ //查找索引 indexOf
var rs=[]
for(var i=0;i<this.length;i++){
if(rs.indexOf(this[i])==-1){
rs.push(this[i])
}
}
return rs;
}
Array.prototype.qc4=function(){ //借用对象
var rs=[],obj={};
for(var i=0;i<this.length;i++){
if(!obj[this[i]]){
obj[this[i]]=true;
rs.push(this[i])
}
}
return rs;
}
Array.prototype.qc5=function(){ //ES6
return [... new Set(this)];
}

console.log([1,2,3,5,4,4,5,2,1,3].qc5());
var list=Array.apply(null,{length:90000}).map(item=>(Math.random()*1000)|0)
console.log(list.qc4().length);

console.time('借用对象');
list.qc4();
console.timeEnd('借用对象');
console.time('查找索引');
list.qc3();
console.timeEnd('查找索引');
console.time('删除后面');
list.qc1();
console.timeEnd('删除后面');
console.time('删除前面');
list.qc2();
console.timeEnd('删除前面');
console.time('ES6');
list.qc5();
console.timeEnd('ES6');

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复