Отбор игроков в зависимости от наличия команды

Разделите записи за один проход, проверяя term строго на null. Проверка truthy не выражает условие принадлежности команде точно.

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

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

Разделите записи за один проход, проверяя term строго на null. Проверка truthy не выражает условие принадлежности команде точно.

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

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

Условие

Имеется список игроков, каждый из которых описан объектом со следующими свойствами:

  • name: имя игрока (строка)
  • term: номер команды, в которой выступает игрок (может принимать значения 1, 2, 3, 5 или null, если игрок не привязан к команде) Требуется реализовать функцию filterplayers, принимающую массив таких объектов и возвращающую объект, содержащий два массива:
  • withTeam: игроки, у которых поле term отличается от null (т.е. они состоят в команде);
  • withoutTeam: игроки, у которых поле term равно null (т.е. они не принадлежат ни одной команде).

Ответ

Разделите записи за один проход, проверяя term строго на null. Проверка truthy не выражает условие принадлежности команде точно.

function filterplayers(players) {
  const result = { withTeam: [], withoutTeam: [] };
  for (const player of players) {
    result[player.term === null ? 'withoutTeam' : 'withTeam'].push(player);
  }
  return result;
}

Время O(n), память O(n) для результата. Объекты не копируются; предполагается, что term действительно имеет один из перечисленных допустимых вариантов.

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

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

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

Подробнее