有一个数组

    1. arr = [1, 2, [3, 4], 5]

    要将它拍平,可使用 Array.prototype.concat 方法

    1. Array.prototype.concat.apply([], arr)
    2. // 等价于
    3. Array.prototype.concat.call([], ...arr)
    4. // 等价于
    5. [].concat(...arr)
    6. // 即
    7. [].concat(1, 2, [3, 4], 5)

    对于嵌套更深的数组,则可以使用递归

    1. function flatten(arr) {
    2. const isDeep = arr.some(item => item instanceof Array)
    3. if (!isDeep) {
    4. return arr
    5. }
    6. const res = Array.prototype.concat.apply([], arr)
    7. return flatten(res)
    8. }
    9. console.log(flatten([1, 2, [3, [4, 5, [6, 7]]], 8, [9, 10]]))