Для рабочего проекта мне нужно было включить форму мастера с двумя вопросами на каждой странице. Чтобы получить общее количество страниц, я разделил общее количество вопросов на 2, а затем округлил до ближайшего целого числа. Однако были некоторые проблемы с этой реализацией, и требовалось более эффективное решение.
Мой технический руководитель указал на использование фрагментации массива. Вот как это работает:
Выше мы определяем функцию с именем Chunk, которая принимает 2 параметра: исходный массив и размер фрагмента.
Затем мы определяем временный массив с именем tempArray и пусть это будет пустой массив.
Впоследствии мы используем метод Array.slice() в цикле for. Метод slice()
возвращает неглубокую копию части массива в новый объект массива, выбранный от begin
до end
(end
не входит). Исходный массив не будет изменен.
Пример:
var animals = ['ant', 'bison', 'camel', 'duck', 'elephant']; console.log(animals.slice(2)); // expected output: Array ["camel", "duck", "elephant"] console.log(animals.slice(2, 4)); // expected output: Array ["camel", "duck"]
Затем мы помещаем каждый фрагмент в наш tempArray (изначально пустой массив), чтобы получить новый массив желаемого результата.
Теперь мы можем считать каждый элемент в массиве отдельными страницами для нашей формы мастера. Это определенно более элегантный способ реализации логики разбиения по страницам для многоэтапных форм мастера.
Ваше здоровье!