Как объединить два массива данных: основной список сущностей и ответ бэкенда с дополнительной информацией, сопоставляя элементы по ключу?

Постройте Map дополнительных данных по ключу и пройдите основной массив, сохраняя его порядок и явно определяя приоритет полей.

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

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

Постройте Map дополнительных данных по ключу и пройдите основной массив, сохраняя его порядок и явно определяя приоритет полей.

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

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

Постройте Map дополнительных данных по ключу и пройдите основной массив, сохраняя его порядок и явно определяя приоритет полей.

Например, при уникальном id и приоритете данных backend:

const extraById = new Map(extra.map(item => [item.id, item]));
const result = main.map(item => ({ ...item, ...(extraById.get(item.id) ?? {}) }));

Сложность O(n + m), дополнительная память O(m). Отсутствующие дополнения оставляют исходные поля; повторяющиеся id в extra здесь обрабатываются правилом «последний побеждает». Для другого контракта нужна проверка дубликатов.

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

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

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

Подробнее