// 一维数组去重
// 使用 Set
const removeRepeat = arr => {
return [...new Set(arr)]
}
// 使用数组遍历
const removeRepeat = arr => {
const newArr = []
arr.forEach(item => {
if (!newArr.includes(item)) { // 也可以用 indexOf
newArr.push(item)
}
})
return newArr
}
// 使用 filter 配合 indexOf
const removeRepeat = arr => {
return arr.filter((item, index) => arr.indexOf(item) === index)
}
// ===========================================================================
// 多维数组去重
const removeMultiRepeat = arr => {
// 将多维数组转换为一维数组
const flat = arr => {
let newArr = []
arr.forEach(item => {
if (Array.isArray(item)) {
newArr = newArr.concat(flat(item))
} else {
newArr.push(item)
}
})
return newArr
}
return [...new Set(flat(arr))] // 也可以改用上面的 removeRepeat 方法
}
removeMultiRepeat([1, [2, 3], [2, [8, 9, 1], [4, [5, 8]]]]) // [1, 2, 3, 8, 9, 4, 5]
// 使用 Array.prototype.flat 方法,传入 Infinity 可以直接将多维数组转一维
[...new Set([1, [2, 3], [2, [8, 9, 1], [4, [5, 8]]]].flat(Infinity))]
一维数组&多维数组去重的几个实现方法
于 2023-01-17 22:44:09 首次发布