Ça pourrait être quelque chose comme ça :
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
var arrays = [], size = 3;
while (a.length > 0)
arrays.push(a.splice(0, size));
console.log(arrays);
Véase épissure La méthode de l'Array.
Une méthode alternative qui ne modifie pas le tableau, mais qui crée une copie superficielle de celui-ci avant de l'ouvrir, pourrait être réalisée en utilisant la méthode suivante tranche et une boucle for nique :
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
var arrays = [], size = 3;
for (let i = 0; i < a.length; i += size)
arrays.push(a.slice(i, i + size));
console.log(arrays);
Alors qu'une approche plus orientée vers la programmation fonctionnelle pourrait l'être :
const chunks = (a, size) =>
Array.from(
new Array(Math.ceil(a.length / size)),
(_, i) => a.slice(i * size, i * size + size)
);
let a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
console.log(chunks(a, 3));
console.log(chunks(a, 2));
Véase Array.from et comment nouveau tableau (n) travaux, notamment.