第25题:JS数组扁平化比较常用的6种方法
概念:将数组里面的数组打开,最后合并为一个数组。
1.递归实现:遍历数组元素,如果是数组就再递归调用,不是数组就直接push进新数组。
2.reduce实现:(也是递归调用的一种)
function formatArray(arr) {
return arr.reduce((pre, current) => {
return pre.concat(Array.isArray(current)?formatArray(current):current)
}, [])
}
3.flat方法:这是在ES6里面的新方法
arr.flat(Infinity)
4.toString实现:
arr.toString().split(',')
5.扩展运算符:(也是递归调用的一种)
function formatArray2(arr) {
let arr1 = []
let isStop = true
arr.forEach(v => {
if (Array.isArray(v)) {
arr1.push(...v)
isStop = false
} else {
arr1.push(v)
}
})
if (isStop) {
return arr1
}
return formatArray2(arr1)
}
6.apply实现:
function formatArrayApply(arr) {
while (arr.some(item => Array.isArray(item))) {
console.log(arr)
arr = [].concat.apply([], arr)
}
return arr
}
当然,能够达到相同目的的方法还有很多,这里只列举了部分常用的方法。欢迎大家在评论区补充~
更多题目:后续不断更新中~可前往个人主页查看