Посчитать количество неактивных студентов
Столкнулся с проблемой, у меня есть следующий массив обьектов. Мне нужно посчитать количество неактивных студентов в разрезе каждого курса. В конечном итоге результат должен выглядеть вот так {1: 1, 2: 1, 3: 0, 4: 1}. Буду благодарен если поможете.
let students = [ {name: "Ivan", estimate: 4, course: 1, active: true}, {name: "Petr", estimate: 3, course: 1, active: false}, {name: "Alex", estimate: 2, course: 4, active: false}, {name: "Max", estimate: 5, course: 2, active: true}, {name: "Anton", estimate: 4, course: 3, active: true}, {name: "Roman", estimate: 3, course: 2, active: false}, {name: "Vladimir", estimate: 4, course: 4, active: true}, {name: "Oleg", estimate: 5, course: 3, active: true}, ]; |
students = [ {name: "Ivan", estimate: 4, course: 1, active: true}, {name: "Petr", estimate: 3, course: 1, active: false}, {name: "Alex", estimate: 2, course: 4, active: false}, {name: "Max", estimate: 5, course: 2, active: true}, {name: "Anton", estimate: 4, course: 3, active: true}, {name: "Roman", estimate: 3, course: 2, active: false}, {name: "Vladimir", estimate: 4, course: 4, active: true}, {name: "Oleg", estimate: 5, course: 3, active: true}, ]; let res = students.reduce( (ac, st) => { const nc = st.course; if (!(nc in ac)) ac[nc] = 0; if (!st.active) ac[nc] ++; return ac; }, {}); console.log(res) Цитата:
Или course не только числом может быть? |
:) :write:
const students = [ {name: "Ivan", estimate: 4, course: 1, active: true}, {name: "Petr", estimate: 3, course: 1, active: false}, {name: "Alex", estimate: 2, course: 4, active: false}, {name: "Max", estimate: 5, course: 2, active: true}, {name: "Anton", estimate: 4, course: 3, active: true}, {name: "Roman", estimate: 3, course: 2, active: false}, {name: "Vladimir", estimate: 4, course: 4, active: true}, {name: "Oleg", estimate: 5, course: 3, active: true}, ]; let res = students.reduce( (ac, {course, active}) => { ac[course] = (ac[course]||0) + !active ; return ac; }, {}); console.log(res) |
рони,
так еще запятую добавь, чтоб в одну строку let res = students.reduce((a, {course, active}) => (a[course] =!active + (a[course]>>0), a), {}); |
Vlasenko Fedor,
:) |
voraa, рони,
Ребят, всем спасибо за помощь, если вам не сложно то можно один вариант оформленный в виде обычной функции, чтобы было более наглядно. Просто я недавно изучаю язык и еще плохо понимаю стрелочные функции. Еще раз спасибо :)
|
Часовой пояс GMT +3, время: 19:21. |