js数组的几种去重方法

    //方法1 在待处理的数组里进行循环 并申明一个变量是否唯一位true 
    //再在我们需要得到的数组里进行循环比较如果相等就变成false 如果是true push 
    var larr = [];
    var arr = [1, 2, 3, 4, 5, 3, 3, 2, 1, 1, 1234234, 12, -1, 5];
    for (var i = 0; i < arr.length; i++) {
      var t = true;
      for (var w = 0; w < larr.length; w++) {
        if (larr[w] == arr[i]) {
          t = false;
        }
      }
      t && larr.push(arr[i]);
    }

    console.log(larr);
    //方法2 这个方法不用申明新的变量 用前一个的值与后面所有比较相等就删掉 简单粗暴
    var arr = [2, 3, 3, 2, 5, 5, 6, 5];

    for (var i = 0; i < arr.length - 1; i++) {
      for (var w = i + 1; w < arr.length; w++) {
        if (arr[w] == arr[i]) {
          arr.splice(w);
          ++w;
        }
      }
    }
    console.log(arr);


    //方法3  这个更优雅 写在原型链上 项目中可以写成一个单独的js然后引用 以便于直接调用 
    Array.prototype.unique3 = function () {
      var res = [];
      var json = {};
      for (var i = 0; i < this.length; i++) {
        if (!json[this[i]]) {
          res.push(this[i]);
          json[this[i]] = 1;
        }
      }
      return res;
    }
    var arr = [112, 112, 34, '你好', 112, 112, 34, '你好', 'str', 'str1'];
    alert(arr.unique3());   

你可能感兴趣的:(js数组的几种去重方法)