手写代码 -- 数组扁平化

方案一,利用Array自带方法,最好记的方法。

function recursionFlat1(arr = []) {
            return arr.flat(Infinity)
        }

方案二,最容易弄懂的方法。

function recursionFlat2(arr = []) {
            const res = [];
            arr.forEach(item => {
                if(Array.isArray(item)) {
                    res.push(...recursionFlat2(item))
                } else {
                    res.push(item)
                }
            })
            return res;
        }

方案三,方案二的简化版,思路相同

function recursionFlat3(arr = []) {
            return arr.reduce((res, item) => res.concat(Array.isArray(item) ? recursionFlat3(item) : item), [])
        }

 

posted @ 2020-10-13 11:09  本该如此  阅读(185)  评论(0编辑  收藏  举报