Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как разбить массив на части

Короткий ответ

Идите по массиву с шагом в размер части и вырезайте части через 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 или другого перебираемого объекта.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.