数组去重方法汇总

作者: 倚剑闯天涯_ | 来源:发表于2019-11-15 10:02 被阅读0次

1.Es6 新增的 set 去重

类似数组,但是它有一大特性就是所有元素都是唯一的,没有重复。因此,我们可以利用这一唯一特性进行数组的去重工作,这种方式代码是最少的,在不考虑性能的情况下,这是最方便的

function wipeRepeat(arr) {
  let set = new Set(arr); //此时的set是一个对象
  arr1 = [...set]; //利用扩展运算符展开赋值,生成一个新的数组
  return arr1;
}
let newArr = [1, 2, 3, 4, 5, 1, 1, 1, 1];
console.log(wipeRepeat(newArr)); //[1,2,3,4,5]

2.forEach+indexOf 去重

利用数组的 forEach, indexOf 方法,判断数组中是否有这一项,然后放入到一个新的数组里面

function wipeRepeat(arr) {
  let newArr = []; //定义一个空数组,来存放重复的值
  arr.forEach(item => {
    if (newArr.indexOf(item) == -1) {
      //判断空数组中是否有这个值,如果没有,就放到这个数组中,否则则不
      newArr.push(item);
    }
  });
  return newArr;
}
let arr = [1, 2, 2, 2, 2, 2, 2, 3];
console.log(wipeRepeat(arr)); //[1,2,3]

3.使用数组 filter+indexOf 方法

使用数组的 filter()方法过滤出第一次出现的某个值

function wipeRepeat(arr) {
  return arr.filter((item, index) => {
    return arr.indexOf(item) === index;
  });
}
let arr = [1, 2, 3, 3, 3, 3, 3];
console.log(wipeRepeat(arr)); //[1,2,3]

4.数组 sort 结合 for 循环

数组 sort 排序,然后遍历两者比较,把不相同的一方放入到一个新的数组里面

function wipeRepeat(arr) {
  let arr1 = []; //定义一个空数组
  arr.sort((a, b) => {
    //利用sort()方法对数组进行排序,如果相同放在一起
    return a - b;
  });
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] !== arr[i - 1]) {
      //前后比较,不同的话的就放入到一个新的数组里面
      arr1.push(arr[i]);
    }
  }
  return arr1;
}
let arr = [1, 3, 2, 3, 2, 4];
console.log(wipeRepeat(arr)); //[1,2,3,4]

5.利用 JavaScript 对象的特点

利用对象的属性不能重复的特点结合 for 循环实现数组去重(一个键名和一个键值称为是一个属性)

function wipeRepeat(arr) {
  let newArr = [];
  let obj = {};
  for (var i = 0; i < arr.length; i++) {
    //判断对象中是否有这个属性名
    if (!obj[arr[i]]) {
      //如果没有的话,赋值为1,例{1:1,2:1,3:1}
      obj[arr[i]] = 1;
      newArr.push(arr[i]); //然后根据索引把这些不重复的值放入新的数组中
    }
  }
  return newArr;
}
let arr = [1, 2, 2, 3, 4];
console.log(wipeRepeat(arr)); //[1,2,3,4]

6.数组的 includes 方法;

利用数组的 includes 方法,判断一个数组中是否有某个值,如果没有,就放到一个新的数组里面

function wipeRepeat(arr) {
  let newArr = []; //空数组用来存放重复的数值
  for (let i = 0; i < arr.length; i++) {
    if (!newArr.includes(arr[i])) {
      //判断新数组中是否包含这个值
      newArr.push(arr[i]);
    }
  }
  return newArr; //返回这个新的数组
}
let arr = [1, 3, 3, 3, 4];
console.log(wipeRepeat(arr)); //[1,3,4]

7.双重 for 循环比较

利用循环两两比较,结合数组的 splice 方法,进行截取

function wipeRepeat(arr) {
  for (let i = 0; i < arr.length; i++) {
    //自身不用跟自身进行比较,截取的时候会改变数组的长度,所以要进行j--
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[i] == arr[j]) {
        arr.splice(j, 1);
        j--;
      }
    }
  }
  return arr;
}
let arr = [1, 3, 3, 3, 4];
console.log(wipeRepeat(arr)); //[1,3,4]

数组去重的方法还有好多种,我这个只是写出了几个日常生活中常用的一些去重的方法,如果还有一些简便快捷的方法,希望大家评论区给我留言,大家一起共同进步
————————————————

版权声明:本文为CSDN博主「handsomeYnb」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45356397/article/details/103049653

相关文章

  • 数组去重方法汇总

    1.Es6 新增的 set 去重 类似数组,但是它有一大特性就是所有元素都是唯一的,没有重复。因此,我们可以利用这...

  • ES6数组去重

    普通数组去重 方法1 方法2 对象数组去重

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • Array集结号

    实现数组去重的几种方法 数组去重一 数组去重二 利用数组indexof+push实现数组去重 数组去重三 利用对象...

  • JS数组去重的方法汇总

    一、使用双重for循环,再利用数组的splice方法去重(ES5常用) 注:array.splice(index,...

  • 数组

    数组 数组常用方法 数组去重

  • 数组去重

    分类 非对象数组去重 对象数组去重 分类一 --- 非对象数组去重 方法一: set(es6常用) 方法二:red...

  • 数组对象去重方法:

    数组对象去重方法: // 数组对象去重 ```` toRetry = (arr = []) => { let re...

  • js:数组去重

    数组去重的常见写法: 数组去重封装成方法: es6的数组去重(Array.from):

  • JS实现数组去重常用的六种方法

    双重for循环去重 includes实现数组去重 indexOf实现数组去重 利用set方法去重 ES6 Arra...

网友评论

    本文标题:数组去重方法汇总

    本文链接:https://www.haomeiwen.com/subject/ziejictx.html