码迷,mamicode.com
首页 > 编程语言 > 详细

js-数组中去掉重复的

时间:2016-03-12 17:09:21      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

关于一个固定的已知的数组例如:var arr = [‘name‘,‘OK‘,‘123‘,‘n‘,‘look‘,‘777‘,‘n‘,‘123‘,‘name‘,1,3,5,1,‘OK‘];

那么问题来了,我们怎么能去掉重复的字符串或者数字,得到新的数组呢!

方法①:

function takeRepetition_1(arr){
  var data= {};  //这里会遍历data的arr[i]属性 因为data为空 理所当然返回undefined
  var result = [];
  for(var i=0;i<arr.length;i++){
    if( !json[arr[i]] ){
      json[arr[i]] = 1;  //所以当if满足!undefined 即为true的时候 给data的arr[i]的属性的值设定为1
      result.push( arr[i] ); //然后放入结果数组里 所以当arr数组中有重复的值时 if不满足条件 就不会添加到数组了
    }
  }
  return result;
}
console.log(unqiue(arr));

 


方法②:
Array.prototype.takeRepetition_2 = function() {  //两次循环遍历数组,取值做等比比较
  var a = [];
  var l = this.length;
  for(var i = 0 ;i< l; i++)
    for(var j = i + 1 ;j < l; j++) {
      if (this[i] === this[j]) {

        j = ++i

      }
    }
    a.push(this[i]);
  }
  return a;
}
console.log(arr.takeRepetition_2());

 

方法③:

Array.prototype.takeRepetition_3 = 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.takeRepetition_3());

 

好啦 欢迎大家有不同的方法一起讨论哦!~~~~~

js-数组中去掉重复的

标签:

原文地址:http://www.cnblogs.com/HollyLearning/p/5269281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!