知向前端
使用js给数组去重的4种常用方法
2015-6-14 Jon


        之前我在博客园发表过一篇使用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());








发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容