方法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)