JS数组去重

学习数组过程中接触到了去重的问题,下面来实现它

数组去重有很多种方法,这里使用两种方法来研究

1.数组去重

1.1.ES6 Set数据结构

Set结构 是ES6推出的新数据结构。类似与数组,下面来看一下它的特性。

  • 它类似于数组,但是成员的值都是唯一的,没有重复的值。
  • Set 本身是一个构造函数,用来生成 Set 数据结构。
  • Set数据结构更多详细请点击

而数组去重就是利用了它的 ” 无重复值 ” 的特性来实现。

let arr = [0, 0, 0, 2, 2, 12]
let arr1 = new Set(arr)

console.log(Array.from(arr1)) // [0, 2, 12]

上面代码可以说是数组去重最简洁的方法,但是它无法去除 “空对象"

1.2.原生实现

思路:

  1. 方法中声明一个对象模板 和 数组模板(这个数组为去重后的新数组)
  2. 遍历数组,if判断 对象模板中是否有原数组对应的属性值
  3. 若有(重复的值),则不做操作(过滤它)
  4. 若无,则添加键名到对象模板中。并且向数组模板中 push 此属性值
  5. 返回此 数组模板(去重完毕)

上代码

let arr = [0, 0, 0, 2, 2, 12]

Array.prototype.unique = function() {
  let temp = {}
  let newArr = []

  for(let i = 0; i < this.length; i++) {
    if (!temp.hasOwnProperty(this[i])) {
      temp[this[i]] = this[i]
      newArr.push(this[i])
    }
  }
  return newArr
}

arr.unique() //[0, 2, 12]

注意: 上面代码中直接 Array.prototype 上添加此方法,这样可以直接让数组链式调用此方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值