Нормализация массива пользователей в объект с id‑ключами

Преобразуйте каждую запись в пару [id, user] и соберите объект через Object.fromEntries. Значениями останутся исходные объекты пользователей.

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

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

Преобразуйте каждую запись в пару [id, user] и соберите объект через Object.fromEntries. Значениями останутся исходные объекты пользователей.

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

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

Условие

Дан список объектов, каждый из которых описывает отдельного пользователя. Необходимо преобразовать этот список в структуру‑словарь, где каждый ключ — это уникальный идентификатор пользователя (id), а значение — исходный объект с полной информацией о пользователе.

const users = [
  { id: 1, age: 16, salary: 200, name: 'Andrey', roles: ['front'] },
  { id: 2, age: 21, salary: 250, name: 'Vasya', roles: ['back'] },
  { id: 3, age: 30, salary: 400, name: 'Sergey', roles: ['front', 'lead'] },
  { id: 4, age: 25, salary: 360, name: 'Dmitriy', roles: ['manager'] },
  { id: 5, age: 50, salary: 420, name: 'Max', roles: ['back', 'lead'] },
];

Ответ

Преобразуйте каждую запись в пару [id, user] и соберите объект через Object.fromEntries. Значениями останутся исходные объекты пользователей.

const usersById = Object.fromEntries(users.map(user => [user.id, user]));

Числовые ID станут строковыми ключами. При повторном ID последняя запись заменит предыдущую; если это недопустимо, проверяйте уникальность. Копия неглубокая: значение словаря и элемент исходного массива — один объект.

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

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

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

Подробнее