作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须创建一个 JavaScript 函数来将如下所示的对象转换为分层 JSON 对象。
来源是 HR 员工列表及其相应的经理。
源对象:
Employee Manager Title
Alfredo general manager
Bergman Alfredo senior engineer
Billy Alfredo senior engineer
Johnson Alfredo department manager
Angela Johnson senior engineer
Anderson Johnson senior engineer
Amy Johnson department manager
Patsy Amy engineer
Jane Amy engineer
JSON 对象应如下所示:
var datasource = {
'name': 'Alfredo',
'title': 'general manager',
'children': [
{ 'name': 'Bergman', 'title': 'senior engineer' },
{ 'name': 'Johnson', 'title': 'department manager',
'children': [
{ 'name': 'Anderson', 'title': 'senior engineer' },
{ 'name': 'Amy', 'title': 'department manager',
'children': [
{ 'name': 'Patsy', 'title': 'engineer'},
{ 'name': 'Jane', 'title': 'engineer'}
]
},
{ 'name': 'Angela', 'title': 'senior engineer' }
]
},
{ 'name': 'Billy', 'title': 'senior engineer' }
]
};
我尝试过各种方法都不成功,但我对 JavaScript 很菜鸟。
任何帮助或想法将不胜感激。
最佳答案
我认为这应该做你想做的事:迭代列表,构建所有员工的 map ,然后按经理姓名将员工分类到正确的子组中,仅返回符合条件的员工没有经理。
var entries = [{ name: 'Bergman', manager: 'Alfredo', title: 'senior engineer' }, { name: 'Billy', manager: 'Alfredo', title: 'senior engineer' }, { name: 'Johnson', manager: 'Alfredo', title: 'department manager' }, { name: 'Angela', manager: 'Johnson', title: 'senior engineer' }, { name: 'Anderson', manager: 'Johnson', title: 'senior engineer' }, { name: 'Amy', manager: 'Johnson', title: 'department manager' }, { name: 'Patsy', manager: 'Amy', title: 'engineer' }, { name: 'Jane', manager: 'Amy', title: 'engineer' }, { name: 'Alfredo', manager: '', title: 'general manager' }]
function build_org_chart(list) {
var map = {}, node, managers = [], i;
// Build the map of employees we will use later.
for (i = 0; i < list.length; i += 1) {
map[list[i].name] = i;
list[i].directReports = []; // init the children
}
for (i = 0; i < list.length; i += 1) {
node = list[i];
if (node.manager != "") {
// If the employee has a manager, find them
var indexOfManager = map[node.manager];
// Then add that employee to the managers children.
list[indexOfManager].directReports.push(node);
} else {
// If they haven't got a manager, must be a boss.
managers.push(node);
}
}
// Return only the top bosses.
return managers;
}
console.log(build_org_chart(entries));
关于javascript - 将js对象转换为层次结构的JSON结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55023378/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!