> Как обрабатывать дублирующиеся ключи при преобразовании массива объектов в объект в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Яндекс

Стек: JavaScript

> Пример ответа

При работе с дублирующимися ключами при преобразовании массива объектов в объект в JavaScript важно понимать, что стандартные методы (например, Object.fromEntries или reduce) просто перезаписывают значение последним встреченным. Чтобы контролировать обработку дубликатов, можно использовать следующие подходы:

  1. Агрегация значений в массив - если нужно сохранить все значения для одного ключа:
JAVASCRIPT
const arr = [{id: 1, name: 'Alice'}, {id: 1, name: 'Bob'}, {id: 2, name: 'Charlie'}];
const result = arr.reduce((acc, item) => {
const key = item.id;
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(item);
return acc;
}, {});
// { 1: [{id:1, name:'Alice'}, {id:1, name:'Bob'}], 2: [{id:2, name:'Charlie'}] }
  1. Выбор последнего значения - стандартное поведение, если дубликаты не критичны:
JAVASCRIPT
const result = Object.fromEntries(arr.map(item => [item.id, item]));
// { 1: {id:1, name:'Bob'}, 2: {id:2, name:'Charlie'} }
  1. Кастомная логика - например, суммирование или выбор по условию:
JAVASCRIPT
const result = arr.reduce((acc, item) => {
const key = item.id;
if (!acc[key] || item.priority > acc[key].priority) {
acc[key] = item;
}
return acc;
}, {});

Выбор метода зависит от бизнес-требований: нужно ли сохранять все данные или достаточно уникального ключа.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью