数组扁平化
输入:[1,[2,[3,5],5],6]
输出:[1,2,3,4,5,6]
方法一:递归
const transformArray = (arr, res) => {for (let i = 0; i < arr.length; i++) {if (arr[i] instanceof Array) {transformArray(arr[i], res)} else {res.push(arr[i])}}return res
}let array = [1, [2, [3, 4], 5], 6]
let result = []console.log(transformArray(array, result))
// [1,2,3,4,5,6]
方法二:递归(用contact和push)
const transformArray = (arr) => {let res = []for (let i = 0; i < arr.length; i++) {if (Array.isArray(arr[i])) {res = res.concat(transformArray(arr[i]))} else {res.push(arr[i])}}return res
}let array = [1, [2, [3, 4], 5], 6]console.log(transformArray(array))
// [1, 2, 3, 4, 5, 6]
方法三:toString
let array = [1, [2, [3, 4], 5], 6]
let result = array.toString().split(',').map((e) => Number(e))console.log(result)
// [1, 2, 3, 4, 5, 6]
方法四:展开运算法
const transformArray = (arr) => {while (arr.some(i => Array.isArray(i))) {arr = [].concat(...arr)}return arr
}let array = [1, [2, [3, 4], 5], 6]
console.log(transformArray(array))
// [1, 2, 3, 4, 5, 6]
方法五:flat
let array = [1, [2, [3, 4], 5], 6]
console.log(array.flat(Infinity))
// [1, 2, 3, 4, 5, 6]