Tengo algo como esto, una matriz de matrices donde cada matriz tiene 7 valores
const arrays = [[1,2,3,4,5,6,7],[8,9,10,11,12,13,14]]¿Cuál es la forma más eficiente de dividir esto en una matriz de matrices donde cada matriz tendrá 2 valores y la última matriz de matrices contendrá el 1 elemento restante, como este?
[[1,2], [8,9]] [[3,4], [10,11]] [[5,6], [12,13]] [[7], [14]]Puede usar array#reduce y array#forEach para dividir su matriz según el size .
const arr = [[1,2,3,4,5,6,7],[8,9,10,11,12,13,14]], size = 2, result = arr.reduce((r, a, i) => { a.forEach((v,j) => { const idx = Math.floor(j/size); r[idx] = r[idx] || []; r[idx][i] = r[idx][i] || []; r[idx][i].push(v); }); return r; },[]); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0; }No parece tan eficiente, pero funciona.
const arrays = [[1,2,3,4,5,6,7],[8,9,10,11,12,13,14]]; // number of sub arrays var numsubarr = Math.ceil(arrays[0].length / 2); // parring up the vaules var arr1 = arrays.map(arr => Array.from(Array(numsubarr).keys()).map(i => arr.slice(i*2, i*2+2))); // combining the two arrays var arr2 = Array.from(Array(numsubarr).keys()).map(i => [arr1[0][i],arr1[1][i]]); console.log(arr2);