Можно рекурсией. Вот функция:
const arraySplitter = (arr, qtyItems) => {
let countItems = 0
const lengthArr = arr.length
const resultArr = []
const splitter = (arr) => {
if (countItems >= lengthArr) {
return
}
resultArr.push(arr.slice(countItems, countItems + qtyItems))
countItems = countItems + qtyItems
splitter(arr)
}
splitter(arr)
return resultArr
}
arr - массив который нужно разбить
qtyItems - количество элементов в подмассивах нового массива.
Если циклом
const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const array_size = 3;
const sliced_array = [];
for (let i = 0; i <array.length; i += array_size) {
sliced_array.push(array.slice(i, i + array_size));
}