Дедупликация событий из NDJSON-потока
Условие
Консьюмер очереди сбрасывает события в NDJSON: по одному JSON-объекту на строку. Доставка «хотя бы один раз», поэтому одно событие может прийти несколько раз, а ещё в поток попадает мусор.
Строка корректна, если это валидный JSON, верхний уровень это объект (не массив, не null), и у него есть строковые поля id и type. Пустые строки (и из одних пробелов) пропускай без учёта. Некорректные строки считай. Из корректных учитывай только первое событие с данным id, повторы пропускай.
Выведи по строке <type> <число уникальных событий> для каждого типа в порядке возрастания кодов символов, последней строкой invalid <число некорректных строк>.
До 500 строк.
Пример
{"id":"e1","type":"order.created"}
{"id":"e2","type":"order.paid"}
{"id":"e1","type":"order.created"}
{oops
{"id":"e3","type":"order.paid","amount":100}
order.created 1
order.paid 2
invalid 1
Как подойти
Подсказки: 3
JSON.parseвtry/catchна каждую строку.- Проверь тип верхнего уровня:
typeof null === "object"и массив тоже объект. Setобработанных id.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.