如何解决我想将对象的平面数组存储为嵌套的对象形式如树格式
我想将对象的平面数组存储为嵌套的对象形式(如树格式)。 我找到了解决方案,但找不到变量“ 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 举报,一经查实,本站将立刻删除。