常见的数组扁平化有很多种,我最常用的就是[].flat()
.但是这个方法IE
是不兼容的.
刚好明天周一,这会睡不着.就来总结一下常见的几种数组扁平化的方法吧.
递归
数组转字符串
[].flat()
reduce方法
const arr = [1, 2, 3, [4, 5], 6, [7, 8, [10, 11, 12], [13]], 14]
//es6语法
let newArr = arr.flat(Infinity)
//递归方法
const toArr = (arr) => {
let newArr = []
arr.forEach((item) => {
if (Array.isArray(item)) {
newArr = newArr.concat(toArr(item))
} else {
newArr.push(item)
}
})
return newArr
}
//arr.reduce 方法
const arrReduce = (arr) => {
return arr.reduce((pre, current) => {
if (Array.isArray(current)) {
return pre.concat(arrReduce(current))
} else {
return pre.concat(current)
}
}, [])
}
//数组转字符串,在将字符串切割成数组
const arrTostring = (arr) => {
return arr
.toString()
.split(',')
.map((item) => Number(item))
}
console.log(newArr, '数组方法')
console.log(arrTostring(arr), '数组转字符串方法')
console.log(arrReduce(arr), 'reduce方法')
console.log(toArr(arr), '递归方法')
最新回复