Skip to content

Instantly share code, notes, and snippets.

@fronterior
Created November 24, 2021 07:48
Show Gist options
  • Save fronterior/89442de31e87750b1118204b38658222 to your computer and use it in GitHub Desktop.
Save fronterior/89442de31e87750b1118204b38658222 to your computer and use it in GitHub Desktop.
const createRangePagination = (page: number, limit: number, total: number, range: number) => {
const size = range * 2 + 1;
const maxPage = Math.ceil(total / limit);
const start = range >= page ? 1
: maxPage - range < page ? maxPage - size + 1
: page - range;
const end = size > page + range ? size
: maxPage < page + range ? maxPage
: page + range;
return Array.from({length: end - start + 1}, (_, i) => i + start);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment