首页 > 其他分享 >一维数组转为多维

一维数组转为多维

时间:2023-07-01 17:44:29浏览次数:30  
标签:arr 一维 item var 数组 parentId 多维 id name

function convertToMultiDimensionalArray(arr) {
  var map = {};
  var roots = [];

  // 将数组元素以ID为键,构建一个映射表
  for (var i = 0; i < arr.length; i++) {
    var item = arr[i];
    item.children = [];

    map[item.id] = item;

    var parentId = item.parentId;
    if (parentId in map) {
      map[parentId].children.push(item);
    } else {
      roots.push(item);
    }
  }

  return roots;
}

var arr = [
  { id: 1, name: "A", parentId: null },
  { id: 2, name: "B", parentId: 1 },
  { id: 3, name: "C", parentId: 1 },
  { id: 4, name: "D", parentId: 2 },
  { id: 5, name: "E", parentId: 2 },
  { id: 6, name: "F", parentId: 3 }
];

var multiDimensionalArray = convertToMultiDimensionalArray(arr);
console.log(multiDimensionalArray);

 在上面的例子中,假设对象有 idnameparentId 属性。我们首先创建一个映射表 map,将每个对象的 id 作为键,然后根据 parentId 将对象连接到其相应的父对象的 children 数组中。如果 parentId 不存在于映射表中,则将该对象视为根元素,并添加到 roots 数组中。最后,返回根元素数组 roots 

标签:arr,一维,item,var,数组,parentId,多维,id,name
From: https://www.cnblogs.com/srcQin/p/17519619.html

相关文章

  • js-遍历两个对象数组,属性值相等的一项合并属性并生成新数组
    operatData.value.seriesList=res.data.seriesList.reduce((accumulator,current)=>{constexisting=userOptionsColor.find(item=>item.name===current.name)if(existing){accumulator.push({...current,...existing})......
  • js 数组和链表分别实现队列
    链表实现/***1.单项链表实现队列,但要同时记录head和tail*2.要从tail入队,head出对,否则出队时,tail不好定位*2.单独记录length,不可遍历链表获取length*/classMyQueue{head=null;//头tail=null;//尾len=0;add(n){letnewNode={......
  • 【面试题】数组去重你想到几种办法呢?
    前言你是否在面试的过程中被考到过给你一个数组让你去掉重复项呢?当时你的脑海里除了用Set实现之外,你还与面试官讲了什么去重的方法呢?你能否封装来一个可复用的数组去重api呢?依稀记得当时我被问到这个问题的时候,我也没回答出很多种解决办法。那下面我来总结一下对于数组去重这道简单......
  • 稀疏数组应用场景
    基本介绍:当一个数组中大部分元素为0,或为同一个值的数组时,可以用稀疏数组来保存该数组处理方法:举例说明:......
  • C语言初阶-数组
    1.一维数组的创建和初始化1.1数组的创建数组是一组相同类型元素的集合数组的创建方式:type_t  arr_name [const_n];//type_t数组元素类型 arr_name数组名const_n常量表达式或常量,用来指定数组的大小[]基本语法形式intarr[20];charch[5];doubledate1[20];doubleda......
  • Vue3 reactive 操作数组 响应性(数组变了,但页面显示没变)问题
    问题代码:tableTemplates:Array<HkTaskTemplateEntity>=reactive([]);//删除方法的一部分,根据templateId删除数组数据this.tableTemplates=this.tableTemplates.filter(item=>templateId!==item.templateId);删除后tableTemplates数组中对象减少,但vue页面显示数据......
  • JavaScript中数组常用方法汇总!
    数组是一个复杂数据类型,我们在操作它的时候就不能再想基本数据类型一样操作了。比如我们想改变一个数组//创建一个数组vararr=[1,2,3]//我们想把数组变成只有1和2arr=[1,2]这样肯定是不合理,因为这样不是在改变之前的数组。相当于重新制作了一个数组给到arr......
  • 数组方法
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body></body></html><script>constarr=['a','b','......
  • XML PHP SimpleXMLElement Object数组转化为普通数组
    做微信第三方接口接入的时候发现接口返回的数据都是xml格式的。以下是如何把xml格式转化为普通的数组格式取值。xml格式数据:$xmlstr="<xml><mch_appid>".$data['mch_appid']."</mch_appid><mchid>".$data['mchid']."</mchid>......
  • 处理HTTPGET请求参数中含有数组不识别的问题处理
    如:  在Program中增加 ......