之前我在博客园发表过一篇使用js给数组去重的3种常用方法,今早起来无事便又写出一种数组去重的方法,其实也是新瓶装旧酒,在这里再总结下吧!
首先还是定义一个数组,以供下面四种方法调用
var arr=['js','js','js','html','js','java','html5','c#','c#','css','html','js'];
1,方法一:简单易理解
Array.prototype.unique1=function(){
var newArr=[this[0]];
for(var i=0;i<this.length;i++){
var fix=true;
for(var j=0;j<newArr.length;j++){
if(newArr[j]==this[i]){
fix=false;
}
}
if(fix){
newArr.push(this[i]);
}
}
return newArr;
}
console.log(arr.unique1());
2,方法二:不使用新数组
Array.prototype.unique2=function(){
for(var i=0;i<this.length-1;i++){
for(var j=1;j<this.length;j++){
if(this[i]==this[i+j]){
this.splice(i+j,1);
j--;
}
}
}
return arr;
}
console.log(arr.unique2());
3,方法三:使用了字符串的indexOf()方法判断
Array.prototype.unique3=function(){
var n = []; //一个新的临时数组
for (var i= 0;i<this.length;i++){
//如果当前数组的第i已经保存进了临时数组,那么跳过,
//否则把当前项push到临时数组里面
if (n.indexOf(this[i]) == -1) n.push(this[i]);
}
return n;
}
console.log(arr.unique3());
4,方法四:此方法改变了数组的顺序
Array.prototype.unique4 = function(){
this.sort();
var re=[this[0]];
for(var i=1;i<this.length;i++){
if(this[i]!==re[re.length-1]){
re.push(this[i]);
}
}
return re;
}
console.log(arr.unique4());
发表评论: