Постройте 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 здесь обрабатываются правилом «последний побеждает». Для другого контракта нужна проверка дубликатов.