• 递归?递归!递归!


    递归真是一个神奇的东西。

    之前自己不会实现,不了解递归,然后就查资料百度,看视频。

    然后跟着视频手把手的学会了递归。。

    然后过两天又会忘记。

    今天又遇到一个js递归问题,实现对象转数组。

    编写之前就想到用递归来完成。

    但是实际上手的时候就发现不知道如何下手[并没有思考之后再去动手,而是直接上手写代码,坏习惯]。

    怎么写都完不成。

    后面就像先完成第一步,根据要求实现最基础的东西,然后你再看,就会找到完整的解决办法,不要着急。

    原题:

    http://ife.baidu.com/course/detail/id/50

    数组转为对象:

    var menuArr = [
        [1, "Area1", -1],
        [2, "Area2", -1],
        [3, "Area1-1", 1],
        [4, "Area1-2", 1],
        [5, "Area2-1", 2],
        [6, "Area2-2", 2],
        [7, "Area1-2-3", 4],
        [8, "Area2-2-1", 6],
    ];

    如上有一个用来存储多级菜单数据的数组,编写一个函数,将其转为如下的对象

    var menuObject = {
        "1": {
            name: "Area1",
            subMenu: {
                "3": {
                    name: "Area1-1"
                },
                "4": {
                    name: "Area1-2",
                    subMenu: {
                        "7": {
                            name: "Area1-2-3"
                        }
                    }
                }
            }
        }
    
        ……
    
    }
    解答结果:
            //做递归不能一开始就想全部逻辑
            //那样就真的递归了
            //先实现单个值找后代
            //实现之后你就发现
            //怎么找后代的后代了
            //数组转对象
            function arrTurnObj(softNum = 0) {
                let newObj = new Object;
                for(let i in menuArr){
                    if(menuArr[i][2] == softNum){
                        newObj[menuArr[i][0]] = {
                            "name" : menuArr[i][1],
                            "subMenu" : arrTurnObj(menuArr[i][0])
                        };
                    }
                }
                return newObj;
            }
    

      



  • 相关阅读:
    SqlServer 利用临时表批量添加&&修改数据库表中的数据
    有关Linux的实时性
    烟囱式到SOA再到微服务
    消费金融前世今生
    其它 一加7t禁止系统更新
    电商 相关底层知识
    CRMEB 基础 列表拖动排序2
    CRMEB 基础 列表拖动排序1
    前端 table排序
    MacBook 关闭访客登陆
  • 原文地址:https://www.cnblogs.com/xiaqiuchu/p/10045135.html
Copyright © 2020-2023  润新知