数组去重的方法有很多种,下面给大家几个使用es6去重的方法
1.数组去除重复基本类型
利用 Set
和 Array.from
两个es6的语法可以快速完成基本类型的数组去重
Set
是一种新的数据结构,它可以接收一个数组或者是类数组对象,自动去重其中的重复项目,使用方式如下
new Set(arr)
不过需要注意的是,利用 Set
去重返回的是一个 Json
对象,并非数组,这时候我们可以使用 Array.from
Array.from
可以把类数组对象、可迭代对象转化为数组,封装成函数如下
function distinct(arr){
return Array.from(new Set(arr))
}
2.数组去除引用类型
如果是需要去重引用类型的话, 则可以使用 reduce
reduce
方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值reducer 函数接收4个参数:
- Accumulator (acc) (累计器)
- Current Value (cur) (当前值)
- Current Index (idx) (当前索引)
- Source Array (src) (源数组)
您的 reducer 函数的返回值分配给累计器,该返回值在数组的每个迭代中被记住,并最后成为最终的单个结果值。
实例如下:
function distinct(arr){
var result = []
var obj = {}
arr.reduce((item,next)=>{
// 这里判断的是数组引用类型中的ID, 各位可自行替换判断依据
obj[next.id]?'':obj[next.id]=true&&result.push(next)
})
return result
}
以上就是数组去重的几个小技巧了,get起来吧。
网友评论