Das Problem mit den derzeitigen Top-Antworten ist, dass sie zu einseitigen Stücken führen. Zum Beispiel verteilt die derzeit akzeptierte Antwort ein Array mit 101 Elementen in 10 Chunks der Größe 10, gefolgt von einem Chunk der Größe 1.
Mit Hilfe einer modularen Arithmetik können einheitliche Stückgrößen erzeugt werden, die sich nie um mehr als 1 unterscheiden:
function split_array(a, nparts) {
const quot = Math.floor(a.length / nparts)
const rem = a.length % nparts
var parts = []
for (var i = 0; i < nparts; ++i) {
const begin = i * quot + Math.min(rem, i)
const end = begin + quot + (i < rem)
parts.push(a.slice(begin, end))
}
return parts
}
var chunks = split_array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3)
console.log(JSON.stringify(chunks))
Ausgabe:
[[1,2,3,4],[5,6,7],[8,9,10]]
(Kopiert aus einer zugehörige Antwort .)