数组扁平化,看这一篇就够了!

168 阅读1分钟

再也不会被面试官问倒了!

一. ES6 flat

function myFlat(a) {
            return a.flat(Infinity)
        }

二. 转换成字符串

        //一种方式,利用数组转化为字符串会去掉中括号
        // 利用正则也可以
        function myFlat(arr) {
            return arr.join(',').split(',').map(a => parseFloat(a))
        }

        function myFlat(arr) {
            return arr.toString().split(',').map(a => Number(a))
        }   

三. 循环 + 递归

        // 展开用concat和展开运算符都可以
        //各种循环都可以辣
        function myFlat(arr) {
            return arr.reduce((pre, cur) => {
                return pre.concat(Array.isArray(cur) ? myFlat(cur) : cur)
            }, [])
        }

四. while+some,不用递归,迭代即可

    function myFlat(arr) {
            while (arr.some(i => Array.isArray(i))) {
                arr = [].concat(...arr)
            }
            return arr
        }

记录记录!