首页 > 编程语言 >JavaScript实现数组与树结构的相互转换

JavaScript实现数组与树结构的相互转换

时间:2024-08-15 15:15:46浏览次数:12  
标签:node traverse 树结构 JavaScript 节点 数组 children

1、将树结构数据转换为数组(按照树结构自上而下的顺序转换)

树结构:

树结构数据样例:

代码转换:

//将树结构数据转换为数组  treeNodes为树结构形式的数据
function treeToArray(treeNodes) {
  let result = [];
  //递归函数 traverse,用于处理单个节点
  function traverse(node) {
    const newNode = { ...node };
    delete newNode.children;
    // 将没有子节点的新节点添加到结果数组中
    result.push(newNode);

    // 如果当前节点包含 children 属性(即有子节点)
    if (node.children) {
      node.children.forEach(traverse);
    }
  }

  treeNodes.forEach(traverse);

  return result;
}

 转换后数据:(数组的index按照树结构自上而下的顺序,没有乱)

 

标签:node,traverse,树结构,JavaScript,节点,数组,children
From: https://www.cnblogs.com/ZhuMeng-Chao/p/18360996

相关文章

  • Springmvc -- 使用`@RequestParam`接收数组类型参数
    在SpringMVC中,处理数组类型的请求参数是一个常见需求,尤其是在处理表单数据或查询参数时。SpringMVC提供了多种方式来接收数组类型的请求参数,包括使用@RequestParam注解、直接绑定到方法参数、以及使用@ModelAttribute注解。本文将深入探讨这些方式的用法、优缺点以及如何......
  • LeetCode每日一题----特殊数组二
    解析:1.int[]nums:一个整数数组。2.int[][]queries:一个二维整数数组,每个一维数组包含两个整数,表示查询的范围。该方法的主要功能是根据给定的nums数组和一系列查询queries,判断每个查询区间[queries[i][0],queries[i][1]]内的元素是否都具有相同的奇偶性。返回一个布......
  • 使用 JavaScript 进行线性搜索
    一.介绍线性搜索,也称为顺序搜索,是一种用于在列表中查找特定值的简单搜索算法。它的工作原理是逐个检查列表中的每个元素,直到找到所需的值或到达列表的末尾。以下是线性搜索如何工作的逐步描述。**从头开始:**从列表的第一个元素开始。**比较各个元素:**将当前元素与目标值......
  • Java数组篇[10]:数组的常见应用场景
    哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。  我是一名后端开发爱好者......
  • js数组对象去重
    核心方法:对象属性排序:Array.sort()string和number类型的数组去重:newSet()代码部分1functionuniqueArr(arr){2letresult=[];3arr.forEach(item=>{4result.push(sortObjProperty(item));5});6result=[...(newSet(result.ma......
  • 长度最小的子数组
    **问题**给定一个含有n个正整数的数组和一个正整数target。找出该数组中满足其总和大于等于target的长度最小的子数组[numsl,numsl+1,...,numsr-1,numsr],并返回其长度。如果不存在符合条件的子数组,返回0。 **注意问题**子数组的定义:一个或连续多个数组中的元......
  • 如何定义和引用二维数组
    一.二维数组常称为矩阵,把二维数组写成行和列的排列形式。、二.怎么定义二维数组floatpay[3][5];以上定义了一个float型的二维数组,第1维有3个元素,第2维有6个元素。每一维的长度分别用一对方括号括起来。二维数组定义的一般形式为  类型说明符数组名【常量表达式】【......
  • 三:指针在数组中的应用
    1.使用指针访问数组指针的加减运算可以用来在内存中移动指针的地址。加上一个整数`n`,实际上就是移动了`n`个步长字节。步长是由指针指向的数据类型决定的。例如,假设有一个`int`类型的指针`p`:int*p=(int*)100;那么,执行`p+1`后,指针地址会向后移动`sizeof(in......
  • 【代码随想录】一、数组:3.双指针 - 977.有序数组的平方
    本文为977.有序数组的平方的解法,部分图文参考自代码随想录977.有序数组的平方。1.题目1:977.有序数组的平方1.1.解法1:直接排序classSolution{public:vector<int>sortedSquares(vector<int>&nums){for(inti=0;i<nums.size();i++){n......
  • [Javascript] Create an Actor model in Javascript
    Referto:https://stately.ai/docs/actor-modelWhatdefinesan“actor”?​Actorsareindependent“live”objectsthatcancommunicatewitheachotherviaasynchronousmessagepassing.InXState,werefertothesemessagesas events.Anactorhasitsowni......