문제
Map, Filter, Reduce - Code Exercises | CroCoder
Map, filter and reduce are the most useful array methods to manipulate arrays and often the hardest to master. Try to solve the given exercises!
www.crocoder.dev
메모
// 배열 속 객체 요소의 합
const objects = [{ x: 1 }, { x: 2 }, { x: 3 }];
const sum = objects.reduce((acc, cur) => acc + cur.x, 0); // 초기값 0 필수
console.log(sum); // 6
정답
const employees = [
{ name: "John", salary: 50000, department: "IT" },
{ name: "Jane", salary: 60000, department: "HR" },
{ name: "Bob", salary: 55000, department: "IT" },
{ name: "Sophie", salary: 75000, department: "HR" },
{ name: "Mike", salary: 65000, department: "IT" },
{ name: "Emily", salary: 80000, department: "HR" },
{ name: "David", salary: 70000, department: "IT" },
];
const employeesByDepartment = employees.reduce((acc, cur) => {
if (acc[cur.department] === undefined) {
acc[cur.department] = [];
}
acc[cur.department].push(cur);
return acc;
}, {});
const avgSalaryByDepartment = Object.keys(employeesByDepartment).map(x => {
const sum = employeesByDepartment[x].reduce((acc, cur) => acc + cur.salary, 0);
return { department: x, average: Math.floor(sum / employeesByDepartment[x].length) };
});
const answer = avgSalaryByDepartment.filter(x => x.average > 65000);
console.log(answer);