关于递归处理,应该怎么处理,思路是什么?

简介: 本文讨论了如何使用递归处理将嵌套对象中的所有名称(name)属性转换为标签(label)属性的问题,提供了详细的递归函数实现思路和代码示例。

在这里插入图片描述
其实问题很简单,就是想要循环遍历整个data对象,来实现所有name转成label,但是想到里面还有children属性,整个children里面可能还会嵌套很多很多的name,如此循环,很难搞,知道使用递归,但却无从下手。

let data = {
   
    name: 'a', 
    children: [
        {
    name: 'b', children: null },
        {
    name: 'c', 
          children: [
            {
    name: 'd', children: null },
            {
    name: 'e', 
               children: [{
    name: 'f', children: null }] 
             }
          ]
        }
    ]
}

这里面的结构可能还会有更多的嵌套,首先递归的思路是对的,我们要找一个临界条件来终止整个递归,有一个条件才让他递归。
首先递归肯定是要循环的。
我们可以去循环data整个对象,也可以按照children数组的形式去循环
我喜欢喜欢数组,其实大同小异。

const aaa = (data) => {
   
    Array.isArray(data) ? data = data : data = [data]
    return data.map(item => {
   
        item['label'] = item.name
        if (item.children && item.children.length !== 0) {
   
            aaa(item.children)
        }
        return item
    })
}

我们使用map循环,map的话可能返回一个新的数组,是符合我们递归的需求,不需要新建立一个变量来存储改变之后的数组对象。
这个问题的临界点就是,children是否存在子级,那我们就可以这样判断找到临界

item.children && item.children.length !== 0

只有children存在并且他里面的水族项是有值的才能让他递归,否则不参与递归,直接返回。
递归的话,直接再一次

aaa(item.children)

进入递归条件。这个时候操作的都是item.children里的数组对象,当然这里面也有用带复杂数据类型引用关系的特点。
在这里插入图片描述
这样成功了,我们也可以吧name属性删除

delete item.name

在这里插入图片描述

目录
相关文章
|
存储 C++
数据的存储练习题 -- (解题思路+代码)
数据的存储练习题 -- (解题思路+代码)
75 0
|
算法
写题思路的分享
写题思路的分享
55 0
|
机器学习/深度学习 算法 测试技术
C++动态规划算法的应用:得到 K 个半回文串的最少修改次数 原理源码测试用例
C++动态规划算法的应用:得到 K 个半回文串的最少修改次数 原理源码测试用例
|
存储 测试技术
删除链表中重复的结点(手把手带你理解思路,从错误代码带你逐步完善代码,非常实用!)
删除链表中重复的结点(手把手带你理解思路,从错误代码带你逐步完善代码,非常实用!)
196 0
删除链表中重复的结点(手把手带你理解思路,从错误代码带你逐步完善代码,非常实用!)
|
IDE 程序员 开发工具
一道面试题的最终答案
一道面试题的最终答案
123 1
|
算法 调度
【Day31】力扣算法(超详细思路+注释)[1441. 用栈操作构建数组 ] [621. 任务调度器]
学习力扣算法(超详细思路+注释)[1441. 用栈操作构建数组 ] [621. 任务调度器]。
293 0
【Day31】力扣算法(超详细思路+注释)[1441. 用栈操作构建数组 ] [621. 任务调度器]
递归的思路
今天给老铁们回顾一下递归的思路以及方法,也是给自己的一个归纳总结。
124 0
递归的思路
多个so合并为一个so的思路
多个so合并为一个so的思路
351 0
|
算法 C++
【牛客刷题-算法】加精 | 合并两个有序的链表 - 从思路设计、bug排除到最终实现的全过程
【牛客刷题-算法】加精 | 合并两个有序的链表 - 从思路设计、bug排除到最终实现的全过程
129 0
【牛客刷题-算法】加精 | 合并两个有序的链表 - 从思路设计、bug排除到最终实现的全过程
递归+回溯经典问题----八皇后问题(参考紫书)
递归+回溯经典问题----八皇后问题(参考紫书)

热门文章

最新文章