Вопрос проверяет понимание того, зачем при агрегации данных из нескольких массивов применять Map вместо обычного объекта, и как это влияет на производительность и корректность.
Когда нужно объединить данные из нескольких массивов по общему ключу (например, id пользователя, код товара, дата), обычный перебор «массив в массиве» даёт квадратичную сложность O(n*m). Map решает эту проблему: он хранит пары ключ-значение и обеспечивает доступ к значению по ключу за O(1) в среднем.
constructor или toString.has, get, set, delete, а также свойство size.Допустим, есть массив заказов и массив платежей. Нужно сложить суммы платежей по каждому заказу.
const orders = [{ id: 1, total: 100 }, { id: 2, total: 200 }];
const payments = [{ orderId: 1, amount: 50 }, { orderId: 1, amount: 30 }, { orderId: 2, amount: 200 }];
const map = new Map();
// инициализируем Map заказами
for (const o of orders) {
map.set(o.id, { ...o, paid: 0 });
}
// агрегируем платежи
for (const p of payments) {
const order = map.get(p.orderId);
if (order) order.paid += p.amount;
}
const result = [...map.values()];
// [{ id: 1, total: 100, paid: 80 }, { id: 2, total: 200, paid: 200 }]Итог: Map стоит применять, когда нужно быстро агрегировать данные по ключу, особенно если ключи не строки или важна чистота и порядок. Это делает код проще и снижает сложность с O(n*m) до O(n+m).
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию