Код Middle API-автотесты обновлено

Обход пагинации по курсору

Условие

API отдаёт список постранично. pages это объект «курсор → { items, next }», где next курсор следующей страницы или null. Напишите collectPages(pages, start):

  • идти от start по next, собирая items по порядку;
  • если курсор уже встречался, остановиться и вернуть { items, error: "loop" };
  • если курсора нет в pages, вернуть { items, error: "missing:<курсор>" };
  • иначе { items, error: null }.

Примеры

collectPages({"p1":{"items":[1,2],"next":"p2"},"p2":{"items":[3],"next":null}}, "p1") // {"items":[1,2,3],"error":null}
collectPages({"a":{"items":[1],"next":"b"},"b":{"items":[2],"next":"a"}}, "a") // {"items":[1,2],"error":"loop"}
collectPages({"a":{"items":[1],"next":"zz"}}, "a") // {"items":[1],"error":"missing:zz"}

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме