коренастая обезьяна

Напишите функцию, которая разбивает массив (первый аргумент) на группы длиной size (второй аргумент) и возвращает их в виде двумерного массива.

unction chunkArrayInGroups(arr, size) {
  // Break it up.
  return arr;
}
chunkArrayInGroups(["a", "b", "c", "d"], 2);
// testcases: 
chunkArrayInGroups(["a", "b", "c", "d"], 2) should return [["a", "b"], ["c", "d"]].
chunkArrayInGroups([0, 1, 2, 3, 4, 5], 3) should return [[0, 1, 2], [3, 4, 5]].
chunkArrayInGroups([0, 1, 2, 3, 4, 5], 2) should return [[0, 1], [2, 3], [4, 5]].
chunkArrayInGroups([0, 1, 2, 3, 4, 5], 4) should return [[0, 1, 2, 3], [4, 5]].
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3) should return [[0, 1, 2], [3, 4, 5], [6]].
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 4) should return [[0, 1, 2, 3], [4, 5, 6, 7], [8]].
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2) should return [[0, 1], [2, 3], [4, 5], [6, 7], [8]].

Обзор) метод arr.splice() arr.splice(позиция для начала удаления, сколько элементов нужно удалить). Исходный массив мутировал.

var arr = ["a", "b", "c", "d"];
// arr.splice(start position, number of items to delete)
arr.splice(0, 2); // output: ["a", "b"] what has been deleted
arr; // output: ["c", "d"] original array has been mutated

var arr = ["a", "b", "c", "d"];
// try splice more than what is left in the array
arr.splice(0, 5); // only 4 items currently in the array
// output: ["a", "b", "c", "d"] whatever is available in arr

Наконец, важно, чтобы холдингPot находился вне цикла While. Если бы он был внутри, то holdPot сбрасывался бы каждый раз, и наш результат будет содержать только последний массив .splice внутри.

function chunkArr (arr, size) {
  var holdingPot = [];
  
  while (arr.length !== 0) {
    // since holdingPot is called outside of while stmt
    // it will accumulate information
 holdingPot.push(arr.splice(0, size));
  }
return holdingPot;
}
debugger;
chunkArr(["a", "b", "c", "d"], 2);