Код Middle Офлайн и хранение обновлено
Слияние записей по полям с версиями
Условие
Каждое поле записи хранит значение и время изменения: { title: { v: "Купить", t: 5 }, done: { v: false, t: 3 } }. Напишите mergeRecords(local, remote): для каждого поля из обеих записей берётся вариант с большим t; при равенстве побеждает remote (сервер). Поле, которое есть только в одной записи, берётся из неё. Вернуть новую запись с ключами в алфавитном порядке.
Примеры
mergeRecords({"title":{"v":"A","t":5}}, {"title":{"v":"B","t":3}}) // {"title":{"v":"A","t":5}}
mergeRecords({"title":{"v":"A","t":2}}, {"title":{"v":"B","t":3}}) // {"title":{"v":"B","t":3}}
mergeRecords({"title":{"v":"A","t":3}}, {"title":{"v":"B","t":3}}) // {"title":{"v":"B","t":3}}
Как подойти
Подсказки: 2
- Соберите множество ключей из обеих записей.
- Сравнение
local.t > remote.tавтоматически отдаёт равенство серверу.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.