Divida la matriz original en una matriz bidimensional de la longitud especificada
list => source array
columns => columns number
targetList => two-dimensional array
const list = [1,2,3,4,5,6,7,8,9,10] const columns = 4; const targetList = [ [1,2,3], [4,5,6], [7,8,9], [10] ]; const columns = 5; const targetList = [ [1,2], [3,4], [5,6], [7,8], [9,10] ]; const columns = 6; const targetList = [ [1,2], [3,4], [5,6], [7,8], [9], [10] ]; const list = [1,2,3,4,5,6] const columns = 4; const targetList = [ [1,2], [3,4], [5], [6] ]; const list = [1,2,3,4] const columns = 5; const targetList = [ [1], [2], [3], [4] ];Puede usar Array.prototype.reduce y transformar la list dada en la cuadrícula deseada.
Empuje una nueva fila a la cuadrícula resultante si se cumple alguna de las siguientes condiciones:
const transform = (list, rows) => list.reduce((t, l, i) => { if ( !t.length || t.at(-1).length >= Math.ceil(list.length / rows) || list.length - i === rows - t.length ) { t.push([]); } t.at(-1).push(l); return t; }, []); console.log(transform([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 4)); console.log(transform([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 5)); console.log(transform([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 6)); console.log(transform([1, 2, 3, 4, 5, 6], 4)); console.log(transform([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 4)); console.log(transform([1, 2, 3, 4], 5));Otra documentación relevante: