Итерация javascript объекта с разбивкой на группы по N элементов? Есть объект-коллекция с другими объектами, содержащие в себе данные нескольких страниц.
Нужно вывести данные этих страниц списком, но с разбивкой по 16 элементов.
Использую DocPad и Jade как шаблонизатор.
Код имеет такой вид:- var projects = getCollection('projects').toJSON()
- var count = projects.length
- var pages = Math.ceil(count / 16)
.entry-list
each project in projects
- for ( var page = 1; page <= pages; page++ )
.entry-list-page
- for (var item = 1; item 0)
.hentry
a(href=project.url).entry-link
h3= project.title
- else
.hentry.emty
Недостающие элементы выводятся пустыми (.empty).
Естественно первый for отрабатывает полностью на каждый project, что ведет к совсем не тем результатам.
А получить хочется что-то вроде этого:.entry-list
.entry-list-page.page1
.hentry
a(href="page1.html").entry-link
h3= title1
.hentry
a(href="page2.html").entry-link
h3= title2
...
.hentry
a(href="page16.html").entry-link
h3= title16

.entry-list-page.page2
.hentry
a(href="page17.html").entry-link
h3= title17
.hentry
a(href="page18.html").entry-link
h3= title18
...
.hentry
a(href="page30.html").entry-link
h3= title30
.hentry.emty
.hentry.emty
Буду признателен за помощь, моих знаний здесь не хватает.
UPD. Для меня решение нашлось таким:- var projects = getCollection('projects').toJSON()
- var count = projects.length
- var ppage = 16
- var pages = Math.ceil(count / ppage)
.entry-list
- for ( var cpage = 1; cpage <= pages; cpage++ )
- var projectsPage = projects.splice(0,ppage) // вырезаем первые 16 элементов
.entry-list-page
each project in projectsPage // Итерируем вырезанные элементы
.hentry
a(href=project.url).entry-link
h3= project.title
- var ecount = ppage - projectsPage.length // Если элементов оказалось меньше нужного,
- for ( var i = 0; i

21 Авг 2019 в 07:09
194 +1
0
Ответы
1

Это отличное решение! Использование метода splice() для разделения массива на страницы по количеству элементов - хороший подход. Таким образом, вы можете легко управлять количеством элементов на странице и заполнять недостающие элементы пустыми блоками.

Если у вас возникнут дополнительные вопросы или понадобится помощь, не стесняйтесь обращаться! Всегда готов помочь.

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир