微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我想将对象的平面数组存储为嵌套的对象形式如树格式

如何解决我想将对象的平面数组存储为嵌套的对象形式如树格式

我想将对象的平面数组存储为嵌套的对象形式(如树格式)。 我找到了解决方案,但找不到变量“ root”如何获取所有值。 有人可以帮助我了解这一点。

var data = [
    {id: 10,Name: "a",parentId: null},{id: 20,Name: "b",parentId: 10},{id: 30,Name: "c",{id: 40,Name: "d",parentId: 20},{id: 50,Name: "e",{id: 60,Name: "f",parentId: 30},{id: 70,Name: "g",{id: 80,Name: "h",parentId: 50},{id: 90,Name: "i",parentId: 60},{id: 100,Name: "j",parentId: 70}
];


const idMapping = data.reduce((acc,rec,i) => {
  acc[rec.id] = i;
  return acc;
},{});
 //console.log("idMapping=",idMapping);

let root;
data.forEach(record => {
 
  // Handle the root element
  if (record.parentId === null || record.parentId === "") {
    root = record;
    return;
  }

  // Use our mapping to locate the parent element in our data array
  const parentEl = data[idMapping[record.parentId]];
  // Add our current record to its parent's `children` array
  parentEl.children = [...(parentEl.children || []),record];
  
});
console.log("root::",root);

输出类似于::

root::
{

    id:10,Name:"a",parentId:null,children:(2) [
     {
        id:20,Name:"b",parentId:10,children:(2) [...]
        },{
        id:30,Name:"c",children:(2) [...]
        }
    ]

}

此外,也将理解更好的解决方案。谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。