Как разбить массив на части
Короткий ответ
Идите по массиву с шагом в размер части и вырезайте части через slice():
const chunk = (array, size) => {
const result = [];
for (let i = 0; i < array.length; i += size) {
result.push(array.slice(i, i + size));
}
return result;
};
console.log(JSON.stringify(chunk([1, 2, 3, 4, 5, 6, 7], 3)));Результат:
[[1,2,3],[4,5,6],[7]]Через Array.from
Сначала посчитайте число частей, затем постройте каждую:
const chunk = (array, size) =>
Array.from({ length: Math.ceil(array.length / size) }, (_, i) => array.slice(i * size, i * size + size));
console.log(JSON.stringify(chunk(['a', 'b', 'c', 'd', 'e'], 2)));Результат:
[["a","b"],["c","d"],["e"]]Частая ошибка
С размером 0 цикл никогда не закончится, потому что шаг равен нулю. Проверяйте размер до разбиения:
const chunk = (array, size) => {
if (size < 1) throw new Error('Size must be at least 1');
const result = [];
for (let i = 0; i < array.length; i += size) result.push(array.slice(i, i + size));
return result;
};
try {
chunk([1, 2, 3], 0);
} catch (error) {
console.log(error.message);
}Результат:
Size must be at least 1Функции из этого ответа
- Array.prototype.slice — Возвращает часть массива.
- Array.from — Создаёт массив из строки, Set, Map или другого перебираемого объекта.