js 数组去重

js 数组去重

1、forEach、indexOf

利用数组原型对象上的forEach方法遍历,indexOf方法筛选

arrayUnique (arr) {
  const newArr = []
  arr.forEach(item => {
    if (newArr.indexOf(item) === -1) {
      newArr.push(item)
    }
  })
  return newArr
}

// 简洁写法
arrayUnique (arr, newArr = []) {
  arr.forEach(item => newArr.indexOf(item) === -1 ? newArr.push(item) : '')
  return newArr
},

2、forEach、includes

利用数组原型对象上的forEach方法遍历,includes方法筛选

arrayUnique2 (arr) {
  const newArr = []
  arr.forEach(item => {
    if (!newArr.includes(item)) {
      newArr.push(item)
    }
  })
  return newArr
}

// 简洁写法
arrayUnique2 (arr, newArr = []) {
  arr.forEach(item => !newArr.includes(item) ? newArr.push(item) : '')
  return newArr
},

3、forEach、对象属性存在

forEach方法遍历,再借助对象属性存在的特性,如果不存在则放入新数组

arrayUnique3 (arr) {
  const obj = {}
  const newArr = []
  arr.forEach(item => {
    if (!obj[item]) {
      obj[item] = 1
      newArr.push(item)
    }
  })
  return newArr
}

// 简洁写法
arrayUnique3(arr, obj = {}, newArr = []) {
  arr.forEach(item => !obj[item] ? (() => { obj[item] = item; newArr.push(item) })() : '') // 自执行匿名函数
  return newArr
},

4、filter删选

利用数组原型对象上的filter进行删选

arrayUnique4 (arr) {
  return arr.filter((item, index) => arr.indexOf(item) === index)
}

5、ES6的Set结构、Array.from方法

创建成员值唯一的Set结构的实例并利用ES6的Array.from转换为数组

arrayUnique5 (arr) {
  return Array.from(new Set(arr))
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值