数组的扁平化就是将一个嵌套多层的数组转换为只有一层的数组(即多维数组变一维数组)
// 数组扁平化常用方法如下:
let arr = [1, [2, [3, [4, 5]]], 6, [7, 8, [9, 10]], 11]
//1.toString、split、map等方法结合
function flatDeep(arr) {
let result = []
return result = arr.toString().split(',').map(Number)
}
//2.ES6的flat方法
function flatDeep(arr) {
return arr.flat(Infinity)
}
//3.用reduce函数、concat函数(递归)
function flatDeep(arr) {
let handle = (pre, current) => {
// 数组合并
return pre.concat(Array.isArray(current) ? flatDeep(current) : current)
}
return arr.reduce(handle, [])
}
console.log('原数组:')
console.log(arr)
console.log('数组扁平化:')
console.log(flatDeep(arr))
以上结果均为:(vscode结果显示到三维,四维及以上不显示)
原数组:
[ 1, [ 2, [ 3, [Array] ] ], 6, [ 7, 8, [ 9, 10 ] ], 11 ]
数组扁平化:
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]