数组去重的几种方法

使用set方法进行去重

  const arrayDeleteRepeat = (array) => {
    return Array.from(new Set(array))
  }

将需要去重的数组转为Set;利用set成员的值都是唯一的,
没有重复的值的特性达到去重目的;去重之后使用Array.from方法将set转为数组;弊端是该方法无法对NaN去重。也可以使用扩展运算符使set转为数组

  const arrayDeleteRepeat = (array) => {
  	let set = new Set(array)
    return [...set]
  }

使用indexOf方法进行去重

  const arrayDeleteRepeat = (array) => {
    let arr = [];
    array.forEach(element => {
      if (arr.indexOf(element) == -1) {
        arr.push(element)
      }
    });
    return arr
  }

利用indexOf查询数组中有没有该元素,没有则添加,有的话不做处理。indexOf方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观。二是,它内部使用严格相当运算符(===)进行判断,这会导致对NaN的误判;

使用includes方法进行去重

  const arrayDeleteRepeat = (array) => {
    let arr = [];
    array.forEach(element => {
      if (!arr.includes(element)) {
        arr.push(element)
      }
    });
    return arr
  }

使用ES7的includes方法去判断是否有该元素,返回结果为布尔值,对NaN数据类型也能做处理

还有很多方法可以做到相同效果,这里就不一一列举了;
ok 再见。
如有不太合理的地方,欢迎指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值