数组中去掉重复的 【js笔记】

关于一个固定的已知的数组例如: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());

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

“想要越幸运,就要越努力”
原文地址:https://www.cnblogs.com/HollyLearning/p/5269281.html