数组去重
刀刀
3/20/2025
0 字
0 分钟
Map记录
首先先看代码:
js
function mapArray(arr) {
const newArr = []
arr.reduce((pre, next) => {
// 判断新的这一项数据是否在map对象内(pre为map对象累计值)
if(!pre.has(next)) {
pre.set(next)
newArr.push(next)
}
return pre // 无论有没有添加数据,都把最新的map对象返回出去
}, new Map())
return newArr
}
下面进行逐行解析:
- 定义一个新的数组
- 通过数组的
reduce
遍历每一项,初始值设为Map
,reduce
方法不仅用于做累加,还能通过其累计值判断其是否存在 - 如果值不存在于
Map
对象中,则把值添加进去,并添加到数组中 - 返回新的累计值
- 循环结束后把新数组返回
知识点
Map
Map 对象的 key 是唯一的,不可重复的,其
set()
方法可以往 Map 对象内添加值,get()
方法可以获取值,has()
方法可以判断Map
对象中是否存在该 key 值。reduce
接收两个参数,参数1为回调函数,参数2为初始值。本案例中,初始值为
Map
对象。回调函数也接收多个参数,参数1为累计值,在一开始时该值为初始值,即Map
对象,参数2为当前循环项。
Set去重
js
function setArray(arr) {
return Array.from(new Set(arr))
// 或
return [...new Set(arr)]
}