分类
默认

手写数组 flatern,考虑多层级

数组 flatern 的意思:[1,2,[3,4]] =>[1,2,3,4]

function flat(arr) {
    // 验证 arr 中,是否还有深层数组 [1,2,[3,4]]
    const isDeep = arr.some(item => item instanceof Array)
    if (!isDeep) {
        return arr // 已经是 flatern [1,2,3,4]
    }
    // 也可以使用 [].concat(1,2,[3,4]),但 apply 第二个参数可以接数组
    const res = Array.prototype.concat.apply([], arr)
    return flat(res) // 递归
}
// [1, 2, 3, 4, 5, 6, 7]
console.log(flat([1, 2, [3, 4, [5, 6]], 7]))