Я бы сделал с помощью библиотеки lodash:
zip(...chunk(arr, 3));
Руками же это делается как-то так:
function spread(arr, count = 3) {
const result = Array.from({length: count}, () => []);
for(let i = 0; i < arr.length;) {
for(let j = 0; j < count; j++) {
result[j].push(arr[i++]);
}
}
return result;
}