将平面记录集(使用父键)转换为嵌套结构? [英] Convert a flat set of records (with parent key) to a nested structure?
本文介绍了将平面记录集(使用父键)转换为嵌套结构?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要一个JS循环来将一个对象数组转换成一个json对象。这里是对象的示例数组:
var employees = [
{name:Jeff,manager:null ,标题:Pres,
{name:Amy,经理:Aaron,标题:lll},
{姓名:Chris,经理:Aaron标题:lll},
{name:Dana,经理:Aaron,标题:lll},
{姓名:Joe,经理:Aaron lll},
{name:Mike,经理:Aaron,标题:lll},
{name:Aaron,经理:Jeff,标题:lll }
];
这是预期的json对象:
var json = {
name:Jeff,
title:Pres,
children:[{
name: Aaron,
title:some title,
children [
{name:Amy,title:some title,children []},
{name: 克里斯,标题:一些标题,儿童:[]},
{名称:Dana,标题:一些标题,子女:[]},
{名称: ,title:some title,children:[]},
{name:Mike,title:some title,children:[]
}]
}]
};
但它超出了我的范围。
解决方案
var employees = [
{name:Jeff,manager:null,title:Pres},
{name:Amy,经理:Aaron,标题:lll},
{name:Chris,经理:Aaron,标题:lll},
:Dana,经理:Aaron,标题:lll},
{姓名:Joe,经理:Aaron,标题:lll},
{name: Mike,经理:Aaron,标题:lll},
{name:Aaron,经理:Jeff,标题:lll}
];
var hash = {};
var root;
(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是没有经理的员工
$ / code $ / pre
I need a JS loop to change an array of objects into a json object. Here is the sample array of objects:
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"}
];
Here is the expected json object:
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:[]
}]
}]
};
but it is beyond me.
解决方案 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
这篇关于将平面记录集(使用父键)转换为嵌套结构?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文