Я думаю, что проще представить элементы в виде 1-D списка (a, b, c ...) и подумать, как 1) получить это из исходного массива и 2) преобразовать его в выходной массив.
Шаг 1 прост, поскольку список в 1-D имеет тот же порядок, что и элементы <li>
в источнике HTML.
Итак, предположим, что у нас есть n
элементов, и мы хотим поместить их в R
строк и C
столбцов, но сначала заполним столбцы. Элемент, который находится в позиции (r
, c
) (на основе 0), является просто элементом # R*c + r
. И, как указано выше, порядок в исходном файле является порядком в первой строке, или (0,0), (0,1), (0,2), ...
Если # элементов не полностью заполняет сетку RxC, то вам нужно добавить проверки, чтобы вычисляемый номер элемента не превышал n
(самый простой способ - заполнить список пустыми элементами заранее).
В зависимости от требований к дизайну вы также можете адаптировать его, чтобы минимизировать количество пустых элементов при фиксированном количестве строк или столбцов.