Objet JSON Employé
var sampleObject = [
{
employeeId: 1,
employeeName: 'E1',
managerId: null
}, {
employeeId: 2,
employeeName: 'E2',
managerId: 1
}, {
employeeId: 3,
employeeName: 'E3',
managerId: 1
}, {
employeeId: 4,
employeeName: 'E4',
managerId: 3
}
]
4 Réponses :
const sampleObject = [
{
employeeId: 1,
employeeName: 'E1',
managerId: null
}, {
employeeId: 2,
employeeName: 'E2',
managerId: 1
}, {
employeeId: 3,
employeeName: 'E3',
managerId: 1
}, {
employeeId: 4,
employeeName: 'E4',
managerId: 3
}
]
function getRootManager(id: number, fined: number[] = []): number {
const employee = sampleObject.find(e => e.employeeId === id);
// Prevent 'Maximum call stack size exceeded'
if (fined.indexOf(employee.managerId) !== -1) {
return employee.employeeId;
}
if (employee.managerId !== null) {
return getRootManager(employee.managerId, [...fined, employee.managerId])
} else {
return employee.employeeId;
}
}
console.log(getRootManager(4))
var sampleObject = [{
'employeeId': 1,
employeeName: 'E1',
managerId: null
},
{
employeeId: 2,
employeeName: 'E2',
managerId: 1
},
{
employeeId: 3,
employeeName: 'E3',
managerId: 1
},
{
employeeId: 4,
employeeName: 'E4',
managerId: 3
}
];
let findHierarchy = (emp) => {
let manager = null;
if (emp.managerId) {
var managerObj = sampleObject.find((o) => o.employeeId === emp.managerId);
manager = findHierarchy(managerObj);
}
emp.manager = manager;
return emp;
}
let e = {
employeeId: 4,
employeeName: 'E4',
managerId: 3
};
let output = findHierarchy(e);
console.log(output);Vous pouvez adopter une approche itérative avec un objet pour les relations Nom / ID et les relations d'identité / ID / Manager.
p>
function getTop(name) {
var top,
id = staff.name[name];
while (top = staff.manager[id]) id = top;
return id;
}
var array = [{ employeeId: 1, employeeName: 'E1', managerId: null }, { employeeId: 2, employeeName: 'E2', managerId: 1 }, { employeeId: 3, employeeName: 'E3', managerId: 1 }, { employeeId: 4, employeeName: 'E4', managerId: 3 }],
staff = array.reduce((r, { employeeId, employeeName, managerId }) => {
r.name[employeeName] = employeeId;
r.manager[employeeId] = managerId;
return r;
}, { manager: {}, name: {} });
console.log(getTop('E4')) Normalement, je vous demanderais d'ajouter votre tentative, mais j'aime bien faire des fonctions récursives car elle ne vient pas très souvent dans mon travail de jour. Je n'ai pas ajouté dans les attributs dossiers, car je me sens comme si cela devrait être relativement simple pour ajouter un type de paramètre et un type de retour une fois que vous avez créé un type pour employé code>. function findHighest(employee) {
const managerId = employee.managerId;
if(managerId) {
const managerObject = sampleObject.find(sample => sample.employeeId === managerId);
return findHighest(managerObject);
}
return employee;
}
Votre question n'est pas claire pouvez-vous le raffiner.
Qu'entendez-vous par "Top Très Manager de E4" Code>S'il vous plaît ajoutez votre essai.
" JSON Object i>" - Donc, un objet JavaScript? Json = chaîne
Voulez-vous retourner le plus grand parent (gestionnaire le plus élevé) ou voulez-vous l'architecture hiérarchique?
Ce Json n'a pas de parents, seulement des frères et sœurs. Et que voulez-vous dire par "le sommet"?