【JavaScript】数组去重的几种方式

数组嵌套对象去重

1,使用reduce来进行去重操作,

let obj = {};
newArr = newArr.reduce((cur, next) => {
  obj[next.id] ? '' : (obj[next.id] = true && cur.push(next));
   return cur;
}, []); // 设置cur默认类型为数组,并且初始值为空的数组

2,数组中嵌套对象,根据对象某个属性对数组进行去重

数组去重

1,filter() 和 indexOf() 实现去重

let originalArray = [1, 2, 3, 4, 1, 2, 3, 4]

let uniqueArray = originalArray.filter((item, index, array) => {
  return array.indexOf(item) === index
})

// uniqueArray === [1, 2, 3, 4]

indexOf 返回它为给定值找到的第一个索引,如果它不是重复值,那么该项的索引必须相同!

2,reduce() 和 includes() 实现去重

let originalArray = [1, 2, 3, 4, 1, 2, 3, 4]

let uniqueArray = originalArray.reduce((unique, item) => {
  unique.includes(item) ? unique : [...unique, item]
}, [])

// uniqueArray === [1, 2, 3, 4]

reducer 函数之后传入的空数组是累加器的起始值,因此第一次通过reduce,unique是一个空数组。
如果它确实包含该项,则返回累加器而不做任何更改,实际上是“跳过”该项。
如果它不包含该项,请将累加器中的值分散到一个新数组中,然后添加正在考虑的项。

3,Set 实现去重

let originalArray = [1, 2, 3, 4, 1, 2, 3, 4]

let uniqueArray = array => [...new Set(array)]
// or
let uniqueArray = Array.from(new Set(originalArray))

// uniqueArray = [1, 2, 3, 4]

利用了在 ES6 中引入的Set对象的能力。集合保证保留插入项的顺序,并且只包含唯一值,转换回一个数组并返回结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值