JS多维数组扁平化

本文介绍了JavaScript中数组的字符串化技巧、递归遍历、Array.prototype.flat()的用法,以及如何通过reduce、concat和递归来处理多层嵌套数组,展示了在实际开发中的应用场景。
摘要由CSDN通过智能技术生成

 (1)数组字符串化

<script>
        // 数组字符串化
        let arr =[[222,333,444],[555,666,77]]
        arr+=''
        arr=arr.split(',')
        console.log(arr)
    </script>

(2)递归

 <script>
        // // (1)数组字符串化
        // let arr =[[222,333,444],[555,666,77]]
        // arr+=''
        // arr=arr.split(',')
        // console.log(arr)

        // (2)递归
        let arr =[[222,333,444],[555,666,77]]
        function reduceDimension(arr1) {
            let ret = []
            let toArr = function (arr1) {
                arr1.forEach(function (item) {
                    item instanceof Array ? toArr(item) : ret.push(item)
                })
                
            }
            toArr(arr)
                return ret
        }
        console.log(reduceDimension(arr))
    </script>

(3)Array.prototype.flat()

<script>
        // // (1)数组字符串化
        // let arr =[[222,333,444],[555,666,77]]
        // arr+=''
        // arr=arr.split(',')
        // console.log(arr)

        // (2)递归
        // let arr =[[222,333,444],[555,666,77]]
        // function reduceDimension(arr1) {
        //     let ret = []
        //     let toArr = function (arr1) {
        //         arr1.forEach(function (item) {
        //             item instanceof Array ? toArr(item) : ret.push(item)
        //         })

        //     }
        //     toArr(arr)
        //         return ret
        // }
        // console.log(reduceDimension(arr))

        // (3)Array.prototype.flat()
        let arr1 = [1, 2, [3, 4]]
        console.log(arr1.flat()) //[1,2,3,4]

        let arr2 = [1, 2, [3, 4, [5, 6]]]
        console.log(arr2.flat())//[1,2,3,4,5,6]

        let arr3 = [1, 2, [3, 4, [5, 6]]]
        console.log(arr3.flat(Infinity))//[1,2,3,4,[5,6]]
    </script>

 (4)使用reduce,concat和递归无限反嵌套多层嵌套数组

<script>
        // // (1)数组字符串化
        // let arr =[[222,333,444],[555,666,77]]
        // arr+=''
        // arr=arr.split(',')
        // console.log(arr)

        // (2)递归
        // let arr =[[222,333,444],[555,666,77]]
        // function reduceDimension(arr1) {
        //     let ret = []
        //     let toArr = function (arr1) {
        //         arr1.forEach(function (item) {
        //             item instanceof Array ? toArr(item) : ret.push(item)
        //         })

        //     }
        //     toArr(arr)
        //         return ret
        // }
        // console.log(reduceDimension(arr))

        // (3)Array.prototype.flat()
        // let arr1 = [1, 2, [3, 4]]
        // console.log(arr1.flat()) //[1,2,3,4]

        // let arr2 = [1, 2, [3, 4, [5, 6]]]
        // console.log(arr2.flat())//[1,2,3,4,5,6]

        // let arr3 = [1, 2, [3, 4, [5, 6]]]
        // console.log(arr3.flat(Infinity))//[1,2,3,4,[5,6]]

        // (4)使用reduce,concat和递归无限反嵌套多层嵌套数组
        const arr = [1, 2, 3, [1, 2, 3, 4, [2, 3, 4]]]

        function flat(arr) {
            return arr.reduce((calc, cur) => {
                return calc.concat(Array.isArray(cur) ? flat(cur) : cur)
            }, [])
        }

        console.log(flat(arr))
    </script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值