Сформировать объект со статистикой субъектов по регионам

Верните reduce непосредственно из функции, используя его аккумулятор как итоговый объект. В ожидаемом примере забыли регион 4: для него тоже должен быть счётчик 1.

Короткий ответ

Что ответить на собеседовании

Верните reduce непосредственно из функции, используя его аккумулятор как итоговый объект. В ожидаемом примере забыли регион 4: для него тоже должен быть счётчик 1.

Подробный разбор

Ответ с пояснениями

Условие

Задача состоит в реализации функции, принимающей массив объектов, каждый из которых содержит свойства name и region. Функция должна вернуть объект, где каждый ключ представляет номер региона, а соответствующее значение — количество субъектов, принадлежащих этому региону.

Дополнительные переменные и вспомогательные массивы использовать нельзя. Необходимо вернуть результат непосредственно из функции getResult.

interface ISubjectRegion {
  name: string;
  region: number;
}

interface IResult {
  [key: ISubjectRegion['region']]: number;
}

const sourceData: ISubjectRegion[] = [
  { name: "Субъект 1", region: 1 },
  { name: "Субъект 2", region: 2 },
  { name: "Субъект 3", region: 2 },
  { name: "Субъект 4", region: 2 },
  { name: "Субъект 5", region: 4 },
];

// ожидаемый результат:
// {
//   1: 1, // 1 субъект в регионе 1
//   2: 3, // 3 субъекта в регионе 2
// }

function getResult(data: ISubjectRegion[]): IResult {
  // реализовать здесь
}

Ответ

Верните reduce непосредственно из функции, используя его аккумулятор как итоговый объект. В ожидаемом примере забыли регион 4: для него тоже должен быть счётчик 1.

function getResult(data: ISubjectRegion[]): IResult {
  return data.reduce<IResult>((result, item) => {
    result[item.region] = (result[item.region] ?? 0) + 1;
    return result;
  }, {});
}

Для приведённого массива результат содержит 1:1, 2:3 и 4:1. Вспомогательный массив и отдельные локальные переменные не создаются; параметры callback — часть самого reduce. Числовые ключи обычного объекта во время выполнения хранятся как строки. Сложность O(n), память O(k) по числу регионов.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее