Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.12.2020, 17:52
Интересующийся
Отправить личное сообщение для mateorich Посмотреть профиль Найти все сообщения от mateorich
 
Регистрация: 21.11.2020
Сообщений: 14

Посчитать количество неактивных студентов
Столкнулся с проблемой, у меня есть следующий массив обьектов. Мне нужно посчитать количество неактивных студентов в разрезе каждого курса. В конечном итоге результат должен выглядеть вот так {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},
];
Ответить с цитированием
  #2 (permalink)  
Старый 10.12.2020, 18:47
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

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)


Сообщение от mateorich
В конечном итоге результат должен выглядеть вот так {1: 1, 2: 1, 3: 0, 4: 1}
А почему не так [1, 1, 0, 1]?
Или course не только числом может быть?

Последний раз редактировалось voraa, 10.12.2020 в 18:52.
Ответить с цитированием
  #3 (permalink)  
Старый 10.12.2020, 19:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123


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)
Ответить с цитированием
  #4 (permalink)  
Старый 10.12.2020, 19:42
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

рони,
так еще запятую добавь, чтоб в одну строку
let res = students.reduce((a, {course, active}) => (a[course] =!active + (a[course]>>0), a), {});
Ответить с цитированием
  #5 (permalink)  
Старый 10.12.2020, 20:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Vlasenko Fedor,
Ответить с цитированием
  #6 (permalink)  
Старый 10.12.2020, 22:49
Интересующийся
Отправить личное сообщение для mateorich Посмотреть профиль Найти все сообщения от mateorich
 
Регистрация: 21.11.2020
Сообщений: 14

voraa, рони,
Ребят, всем спасибо за помощь, если вам не сложно то можно один вариант оформленный в виде обычной функции, чтобы было более наглядно. Просто я недавно изучаю язык и еще плохо понимаю стрелочные функции. Еще раз спасибо

Последний раз редактировалось mateorich, 11.12.2020 в 13:02.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как посчитать количество элементов в Div и вывесть их количетсво в в Css ethereal Элементы интерфейса 2 28.07.2019 10:08
Как посчитать количество месяцев между сегодняшним днем и введенным в поле ввода вклю giwuf Библиотеки/Тулкиты/Фреймворки 3 18.06.2019 15:02
Просмотрела исходик jQuery Откорректируйте где не верно taksebe jQuery 5 23.11.2018 22:42
Посчитать количество чебоксов с одним классом zilon jQuery 1 27.02.2014 17:49
Посчитать общее количество баллов userbanderas jQuery 7 21.09.2011 16:36