实现拍平一个多维数组

24 阅读1分钟
function flat(arr) {
    let newArr = []
    for (let i = 0; i < arr.length; i++) {
        Array.isArray(arr[i]) ? newArr = newArr.concat(flat(arr[i])) : newArr.push(arr[i])
    }
    return newArr
}

验证

const arr = [1, 2, [3, [4, 5, [6]]]]
const result = flat(arr)
console.log(result)

如果有第二个参数,实现需要拍平几层

function flat(arr, deep = 1) {
    let newArr = []
    for (let i = 0; i < arr.length; i++) {
        deep > 0 && Array.isArray(arr[i]) ? newArr = newArr.concat(flat(arr[i], deep - 1)) : newArr.push(arr[i])
    }
    return newArr
}

验证

const arr = [1, 2, [3, [4, 5, [6]]]]
const result = flat(arr, 3)
console.log(result)