方法1:使用flat()
注意IE不支持 ECMAScript 2019 新特性
const arr = [1, [2, [3, [4]]]]
const res = arr.flat(Infinity)
// => [1, 2, 3, 4]
方法2:使用正则(但是数据类型都会变成字符串)
const arr = [1, [2, [3, [4]]]]
const res = JSON.parse('[' + JSON.stringify(arr).replace(/\\[|\\]/g, '') + ']')
// => [1, 2, 3, 4]
方法3:使用 reduce
const flatten = arr => arr.reduce((pre, cur) => pre.concat(Array.isArray(cur) ? flatten(cur) : cur), [])
const res = flatten(arr)
// => [1, 2, 3, 4]
方法4:使用递归函数
const res = []
const func = arr => {
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
fn(arr[i])
} else {
res.push(arr[])
}
}
}
func(arr)