Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как получить диапазон чисел? (https://javascript.ru/forum/misc/80587-kak-poluchit-diapazon-chisel.html)

CryNet 25.06.2020 13:26

Как получить диапазон чисел?
 
Делаю пагинатор:



На основании того на какой странице находиться юзер и сколько он выбрал отображать эму элементов, мне необходимо для него сформировать эти самые элементы и отобразить. Но я никак не могу сообразить как получить диапазон чисел, с какого и по какой элемент я должен отобразить. На выходе должно быть два числа: от и до.

Например:
Кол-во отображаемых эл.: 10
Страница: 1
Я должен отобразить с 1 по 10 эл. (или с 0 по 9)
---
Кол-во отображаемых эл.: 50
Страница: 2
Я должен отобразить с 51 по 102 эл. (или с 49 по 99)

laimas 25.06.2020 13:34

CryNet, этим обычно занимается сервер, по крайней мере только он знает сколько будет страниц, объемы вывода и прочее. Если это и будет готовить клиент, то данные для него все равно должен давать сервер.

CryNet 25.06.2020 13:41

Цитата:

Сообщение от laimas (Сообщение 526399)
CryNet, этим обычно занимается сервер, по крайней мере только он знает сколько будет страниц, объемы вывода и прочее. Если это и будет готовить клиент, то данные для него все равно должен давать сервер.

Я с вами согласен. Но в моём случае все на фронте: генерация страниц на основе фильтров, конкретной страницы, etc.

Просто я элементарно посчитать не могу)))

laimas 25.06.2020 13:52

Тогда я не понимаю о чем речь, ибо на странице можно оперировать только ее данными, а не страницами, о которых клиент вообще ничего не знает.

рони 25.06.2020 14:23

CryNet,
<script>
const pagination = (num, length) => Array.from({length}, (_, i) => num * length - length + i)
document.write(pagination(1, 10)+"<br>");
document.write(pagination(2, 10)+"<br>");
document.write(pagination(1, 50)+"<br>");
document.write(pagination(2, 50))
</script>

CryNet 25.06.2020 15:14

Цитата:

Сообщение от laimas (Сообщение 526403)
Тогда я не понимаю о чем речь, ибо на странице можно оперировать только ее данными, а не страницами, о которых клиент вообще ничего не знает.

Сейчас объясню. Есть страничка. С бэканда приходит объект, а я на фронте на JS генерирую HTML и распихиваю данные по HTML-тегам, разбивая по 10, 20 или 50 элементов, ну и выплёвую на страницу. Отображаю пагинатор. Юзер кликнет на "отображать по 20" - отдам 20 элементов. Кликнет на 2 вторую страницу - первую 20 элементов удалю, а отображу следующую 20 и т.д.. Аналог SPA, только на чистом JS и без виртуального DOM.

CryNet 25.06.2020 15:14

Цитата:

Сообщение от рони (Сообщение 526404)
CryNet,
<script>
const pagination = (num, length) => Array.from({length}, (_, i) => num * length - length + i)
document.write(pagination(1, 10)+"<br>");
document.write(pagination(2, 10)+"<br>");
document.write(pagination(1, 50)+"<br>");
document.write(pagination(2, 50))
</script>

Спасибо, впрочем, как и всегда :)

laimas 25.06.2020 15:17

Цитата:

Сообщение от CryNet
С бэканда приходит объект

Ну так с этого и надо было начитать. А далее как рони, а выводить срез массива от выбранной страницы по номеру страницы умноженному на выбранное пользователем число отображаемых.

CryNet 25.06.2020 15:25

Цитата:

Сообщение от laimas (Сообщение 526412)
Ну так с этого и надо было начитать. А далее как рони, а выводить срез массива от выбранной страницы по номеру страницы умноженному на выбранное пользователем число отображаемых.

Я просто не мог понять, что именно вам не понятно. Прошу прощения :)

laimas 25.06.2020 15:32

Ну так прямо написано о пагинаторе, о страницах на странице... Ну как так. А объект, это иное. Да, вы можете формировать динамически пагинатор и по фильтру из объекта, при это будет вывод первой страницы с пагинатором.

Если, к примеру, данные этого объекта поместить в SQL базу на клиенте, то работать можно чисто sql запросами, ровно также как это и делает сервер - строит пагинатор и выводит запрошенные данные. Вот с чем ассоциируется ваш первый пост. :)


Часовой пояс GMT +3, время: 09:32.