我需要一个 JS 循环来将对象数组更改为 json 对象。这是对象的示例数组:
var employees= [
{name:"Jeff",manager:null,title:"The Pres"},
{name:"Amy",manager:"Aaron",title:"lll"},
{name:"Chris",manager:"Aaron",title:"lll"},
{name:"Dana",manager:"Aaron",title:"lll"},
{name:"Joe",manager:"Aaron",title:"lll"},
{name:"Mike",manager:"Aaron",title:"lll"},
{name:"Aaron",manager:"Jeff",title:"lll"}
];
这是预期的 json 对象:
var json = {
name:"Jeff",
title:"The Pres",
children:[{
name:"Aaron",
title:"some title",
children[
{name:"Amy",title:"some title",children[]},
{name:"Chris",title:"some title",children:[]},
{name:"Dana",title:"some title",children:[]},
{name:"Joe",title:"some title",children:[]},
{name:"Mike",title:"some title",children:[]
}]
}]
};
但这超出了我的范围。
最佳答案
var employees= [
{name:"Jeff",manager:null,title:"The Pres"},
{name:"Amy",manager:"Aaron",title:"lll"},
{name:"Chris",manager:"Aaron",title:"lll"},
{name:"Dana",manager:"Aaron",title:"lll"},
{name:"Joe",manager:"Aaron",title:"lll"},
{name:"Mike",manager:"Aaron",title:"lll"},
{name:"Aaron",manager:"Jeff",title:"lll"}
];
var hash = {};
var root;
for (var i = 0; i < employees.length; i++) {
var employee = employees[i];
hash[employee.name] = {
name:employee.name, manager:employee.manager, title:employee.title, children: []
};
}
for (var i = 0; i < employees.length; i++) {
var employee = hash[employees[i].name];
var manager = hash[employee.manager];
if (manager) {
manager.children.push(employee);
} else {
root = employee;
}
}
// root is the employee without a manager
关于javascript - 将一组平面记录(带有父键)转换为嵌套结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12286831/