zoukankan      html  css  js  c++  java
  • 递归?递归!递归!

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

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

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

    然后过两天又会忘记。

    今天又遇到一个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;
            }
    

      



  • 相关阅读:
    闭包
    原型继承
    js时间戳转成日期格式
    常用正则表达式
    vue中如何实现pdf文件预览?
    Vue动画效果
    手把手教你封装 Vue 组件,并使用 npm 发布
    LCD驱动(FrameBuffer)实例开发讲解
    每个程序员都该阅读的书
    LCD platform_device(s5pv210)
  • 原文地址:https://www.cnblogs.com/xiaqiuchu/p/10045135.html
Copyright © 2011-2022 走看看