js的多维数组扁平化处理(面试高频考点)

99 阅读1分钟

数组的扁平化就是将一个嵌套多层的数组转换为只有一层的数组(即多维数组变一维数组)

// 数组扁平化常用方法如下:

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]