问题描述
我想将对象的平面数组存储为嵌套的对象形式(如树格式)。 我找到了解决方案,但找不到变量“ 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 (将#修改为@)