js递归展开多维数组

本文介绍了一种使用JavaScript展开多维数组的方法。通过递归函数实现数组的扁平化处理,将任意层级的嵌套数组转化为一维数组。此外,还展示了如何利用现代JavaScript中的`flat`方法快速达到相同效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js原生已经提供了一个数组方法是用来展开多维数组如下:

    let arr = [1, 2, 3, ['11', 33, ['61', 5, 4, [33, 55]]], ['20', 2, 65, [5, [12]]]]

    let arr1 = arr.flat(Infinity)

如下是一个js的数组嵌套数据(多维数组)以及展开数组的代码

    //多为数组    
    let arr = [1, 2, 3, ['11', 33, ['61', 5, 4, [33, 55]]], ['20', 2, 65, [5, [12]]]]
    
    //先声明一个空数组,存放展开的每一项
    let arr1 = [];

    //展开的方法:函数接收一个多维数组
    function openArr(arr){
        //循环遍历多维数组
        arr.forEach(item => {
            //判断每一项是否为数组,如果是数组,继续调用该函数进行遍历
            if(Object.prototype.toString.call(item) === '[object Array]'){
                openArr(item)
            }else{
            //如果每一个项不为数组,就push进 arr1 空数组里
                arr1.push(item)
            }
        })
    }

    //调用 
    openArr(arr)
    //输出arr1为展开的多维数组
    console.log(arr1)

以上代码封装方法

    let arr = [1, 2, 3, ['11', 33, ['61', 5, 4, [33, 55]]], ['20', 2, 65, [5, [12]]]]

    function flat(arr){
        let newArr = [];
        function openArr(arr){
            arr.forEach(item => {
                if(Object.prototype.toString.call(item) === '[object Array]'){
                    openArr(item)
                }else{
                    newArr.push(item)
                }
            })
        }
        openArr(arr)
        return newArr;
    }

    let a = flat(arr)
    console.log(a);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值