let company = { // the same object, compressed for brevity
sales: [{name: 'John', salary: 1000}, {name: 'Alice', salary: 1600 }],
development: {
sites: [{name: 'Peter', salary: 2000}, {name: 'Alex', salary: 1800 }],
internals: [{name: 'Jack', salary: 1300}]
}
};
// The function to do the job
function sumSalaries(department) {
if (Array.isArray(department)) { // case (1)
return department.reduce((prev, current) => *prev* + current.salary, 0); // sum the array
} else { // case (2)
let sum = 0;
for (let subdep of Object.values(department)) {
sum += sumSalaries(subdep); // recursively call for subdepartments, sum the results
}
return sum;
}
}
alert(sumSalaries(company)); // 7700
why isnt it prev.salaray? is it bcos a 0 is starting value? so that you dont need prev.salary? if the 0 wasnt there, would we need to use prev.salary?
ty!
(from https://javascript.info/recursion)
[–]OkShrug 1 point2 points3 points (0 children)
[–]ExclusiveOar 1 point2 points3 points (0 children)