关于多重数组转为一个数组

数组中嵌套数组的情况

[[1, 2], [3, 4]] => [1, 2, 3, 4]

const arr = [[1, 2], [3, 4]];
[].concat.apply([], arr);
// 或者下面这样
[].concat(...arr);

数组中多重嵌套的情况(且带小数点或负数)

[1, [2, -3, 4.01, [5, 6.21, [7, 8]], [9, 10], 22]]
=> [1, 2, -3, 4.01, 5, 6.21, 7, 8, 9, 10, 22]

const arr = [1, [2, -3, 4.01, [5, 6.21, [7, 8]], [9, 10], 22]];
arr.toString().split(',').map(Number);
注:这种方法只适合数字,不适合带有“,”的字符串或是千分位的数字

递归的方式实现

const isArr = arg => [].toString.call(arg) === '[Object Array]';
const flat = inputAny => 
    (
        isArr(inputAny[0])
        ? flat(inputAny[0])
        : [inputAny[0]]
    )
    .concat(
        inputAny.length > 1
        ? flat(input.slice(1)
        : []
    )

// console.log(flat([1, 2, 3]);
// console.log(flat([1, [2, 3], 4]);