Задача

Напишите оптимальный класс PaginationHelper для постраничной навигации по коллекции.

class PaginationHelper {
    constructor(collection, itemsPerPage) {}
 
    itemCount() {}              // всего элементов
    pageCount() {}              // всего страниц
    pageItemCount(pageIndex) {} // элементов на странице, -1 если вне диапазона
    pageIndex(itemIndex) {}     // на какой странице элемент, -1 если вне диапазона
}

Пример

const helper = new PaginationHelper(['a', 'b', 'c', 'd', 'e', 'f'], 4);
 
helper.itemCount();      // 6
helper.pageCount();      // 2
helper.pageItemCount(0); // 4
helper.pageItemCount(1); // 2  (последняя страница неполная)
helper.pageItemCount(2); // -1 (страницы нет)
helper.pageIndex(5);     // 1
helper.pageIndex(2);     // 0
helper.pageIndex(-1);    // -1
helper.pageIndex(20);    // -1

Решение