三种方法数组去重

1、原生js去重

// 原生方法去重
  // 数组[2,3,5,4,3,2,6,8,5,4,6,2]去重,返回一个新数组[2,3,5,4,6,8](用函数)
  /* 
    1、创建新数组
    2、遍历旧数组
    3、遍历新数组
    4、新数组元素与旧数组元素比较
    5、没有相同才push
  */
  var arrRemove = function () {
    var arr = [2, 3, 5, 4, 3, 2, 6, 8, 5, 4, 6, 2];
    var flag = true;//没有相同的元素
    // 1、
    var newArr = [];
    // 2、
    for (var i = 0; i < arr.length; i++) {
      flag = true;
      // 3、
      for (var j = 0; j < newArr.length; j++) {
        // 4、
        if (newArr[j] == arr[i]) {
          // 不要push了
          flag = false;
        }
      }
      // 5、
      if (flag) {
        newArr.push(arr[i]);
      }
    }
    // 最终的结果
    console.log(newArr);///[2,3,5,4,6,8]
  }
  arrRemove();

 

2、利用对象的属性名不能重复去重

var arr = [3, 2, 5, 1, 5, 3, 2, 4, 6, 1, 2, 3];
  /*
    利用对象的属性名不能重复的特性对数组去重
    数组:有序的
    对象:无序的
  */
  /*
     思路:
       1、创建新数组、创建新对象
       2、遍历旧数组
       3、让旧数组中的元素当做新对象的属性,属性值随意写
       4、遍历新对象
       5、将新对象中的属性push到新数组中即可
  */
  //  1、
  var newArr = [];
  var newObj = {};
  //  2、
  for (var i = 0; i < arr.length; i++) {
    // 3、
    newObj[arr[i]] = 1;
  }
  console.log(newObj);
  // 4、
  for (x in newObj) {
    newArr.push(Number(x));
  }
  console.log(newArr);

 

3、set结构中的值不能重复去重

    let set = new Set([1, 3, 2, 3, 4, 5, 5, 4, 4, 3, 2, 1]);
    console.log(set);//Set(5) {1, 3, 2, 4, 5}
    let newArr = Array.from(set);
    console.log(newArr);//(5) [1, 3, 2, 4, 5]

 

posted @ 2021-08-26 19:46  从入门到入土  阅读(310)  评论(0编辑  收藏  举报