将组织结构图映射到哈希表



嘿,我正在尝试获取一组对象(员工(并将它们映射到一个新对象,以描绘组织的层次结构。因此,每个经理都有一个密钥和一个数组附加到该密钥上,该密钥包含其报告的所有名称。

我不确定为什么我无法将我的员工姓名推送到他们各自经理的阵列中。这似乎将我的对象键设置为数组而不是 1,2,3,4。

任何人的指点将不胜感激。

Repl.it:https://repl.it/JeMh/2

let data = [
{ 
name: 'ceo',
id: 1,
mgr: null,
},
{
name: 'vp1',
id: 2,
mgr: 1,
},
{
name: 'vp2',
id:3,
mgr: 1,
},
{
name: 'mgr',
id:4,
mgr: 2,
},
];
function displayOrg(data) {
let org = {};
for(let i = 0; i < data.length; i++) {
let current = data[i];
for(let key in current){
if(org[key] !== current.id || current.mgr){
org[current.id] = []
}
}
for(let key in org){
console.log(current.mgr);
console.log(org[key])
if(current.mgr === org[key]){
console.log("THIS HAPPEN");
org[key].push(current.name);
}
}
}
return org;
}

displayOrg(data);

expected resulted: { '1': [vp1,vp2], '2': [mgr], '3': [], '4': [] }

看起来非常简单:

function getMngd(data, mngrId){
return data.filter(emp => emp.mgr === mngrId).map(emp => emp.name)
}
data.reduce((p,c)=>{
const {id} = c;
p[id] = getMngd(data, id);
return p;
},{})

最新更新