Применение событий WebSocket к загруженному снимку без потерь и дублей
Клиент загружает снимок списка заказов по HTTP, а обновления получает по WebSocket. События могли прийти, пока грузился снимок, прийти не по порядку или повториться.
Напишите функцию applyUpdates(snapshot, events).
snapshot—{ version, items }, гдеitems— объект заказов по id.events— массив событий в произвольном порядке:{ version, type: 'upsert', item }или{ version, type: 'delete', id }. У каждого изменения на сервере уникальная возрастающая версия.- Применяйте события по возрастанию версии; событие с версией не больше уже применённой пропускайте — оно уже учтено в снимке или пришло повторно.
upsertкладётitemпо егоitem.id,deleteудаляет заказ поid.- Верните новый снимок
{ version, items }, гдеversion— последняя применённая версия. Входные данные не меняйте.
заготовка решения
function applyUpdates(snapshot, events) {
// ваш код
return undefined;
}