// 法一:递归function flatter(arr) { if (!arr.length) return; return arr.reduce((prev, cur) => Array.isArray(cur) ? [...prev, ...flatter(cur)] : [...prev, cur], [])}/* 法二:迭代 迭代思想:寻找终止条件(如:数组项只要有数组,就一直 while 循环)*/function flatter(arr) { if (!arr.length) return while(arr.some((item) => Array.isArray(item))) { // console.log(arr) // 重点 // var new_array = old_array.concat(value1[, value2[, ...[, valueN]]]) // 参数:value | value[];数组或值 arr = [].concat(...arr) } return arr}// 法三:ES6 flat 或 flatMap。// 嵌套数组.flat(Infinity)var arr = [1, [2, [3, 4, [5]]]]flatter(arr) // [1, 2, 3, 4, 5]