14 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Chunky Monkey | Короткая обезьяна |
Не забудьте использовать Read-Search-Ask если вы застряли. Попробуйте подключить программу
и напишите свой собственный код 
Проблема Объяснение:
Наша цель для этого алгоритма состоит в том, чтобы разделить arr (первый аргумент) на более мелкие куски массивов с длиной, предоставленной size (второй аргумент). Для завершения этого алгоритма необходимо выполнить 4 зеленых проверки (цели), которые необходимо выполнить нашему коду:
(['a', 'b', 'c', 'd'], 2)ожидается[['a', 'b'], ['c', 'd']]([0, 1, 2, 3, 4, 5], 3)ожидается[[0, 1, 2], [3, 4, 5]]([0, 1, 2, 3, 4, 5], 2)ожидается[[0, 1], [2, 3], [4, 5]]([0, 1, 2, 3, 4, 5], 4)ожидается[[0, 1, 2, 3], [4, 5]]
Связанные ссылки
Подсказка: 1
В приведенных выше ссылках предлагается использовать Array.push() , поэтому давайте начнем с создания первого массива для хранения меньших массивов, которые мы скоро получим так:
var newArray = [];
попытаться решить проблему сейчас
Подсказка: 2
Далее нам понадобится for loop для циклического прохождения через arr .
попытаться решить проблему сейчас
Подсказка: 3
Наконец, нам нужен метод для фактического разделения, и мы можем использовать Array.slice() для этого. Ключом к этому алгоритму является понимание того, как все for loop , size , Array.slice() и Array.push() работают вместе.
попытаться решить проблему сейчас
Осторожно, спойлеры!
Решение впереди!
Решение базового кода:
function chunkArrayInGroups(arr, size) {
var temp = [];
var result = [];
for (var a = 0; a < arr.length; a++) {
if (a % size !== size - 1)
temp.push(arr[a]);
else {
temp.push(arr[a]);
result.push(temp);
temp = [];
}
}
if (temp.length !== 0)
result.push(temp);
return result;
}
Код Объяснение:
- Во-первых, мы создаем две пустые массивы, называемые
tempиresult, которые мы в конечном итоге вернем. - Наша для петли петли , пока не равно или больше , чем длина массива в нашем тесте.
a - Внутри нашего цикла мы нажимаем
tempиспользуяtemp.push(arr[a]);если остальная частьa / sizeне равнаsize - 1. - В противном случае мы нажимаем на
temp, нажимаемtempна переменнуюresultи сбрасываемtempв пустой массив. - Затем, если
tempне пустой массив, мы подталкиваем его кresult. - Наконец, мы возвращаем значение
result.
Связанные ссылки
Решение промежуточного кода:
function chunkArrayInGroups(arr, size) {
// Break it up.
var arr2 = [];
for (var i = 0; i < arr.length; i+=size) {
arr2.push(arr.slice(i , i+size));
}
return arr2;
}
Код Объяснение:
- Сначала мы создаем пустой массив
arr2где мы будем хранить наши «куски». - Цикл for начинается с нуля, каждый раз увеличивается по
sizeчерез цикл и останавливается, когда он достигаетarr.length. - Обратите внимание, что это для цикла не проходит через
arr. Вместо этого мы используем цикл для генерации чисел, которые мы можем использовать в качестве индексов для срезания массива в правильных местоположениях. - Внутри нашего цикла мы создаем каждый фрагмент с помощью
arr.slice(i, i+size)и добавляем это значение кarr2сarr2.push(). - Наконец, мы возвращаем значение
arr2.
Связанные ссылки
Расширенное решение для кода:
function chunkArrayInGroups(arr, size) {
// Break it up.
var newArr = [];
var i = 0;
while (i < arr.length) {
newArr.push(arr.slice(i, i+size));
i += size;
}
return newArr;
}
chunkArrayInGroups(["a", "b", "c", "d"], 2);
Код Объяснение:
-
Во-первых, мы создаем две переменные.
newArr- пустой массив, на который мы будем нажимать. Мы также имеем переменнуюiравную нулю, для использования в нашем цикле while. -
Наш цикл while цикл до тех пор, пока
iбудет равен или больше длины массива в нашем тесте. -
Внутри нашего цикла, мы выдвигаем к
newArrмассив с помощьюarr.slice(i, i+size). Впервые это петли, это будет выглядеть примерно так:newArr.push (arr.slice (1, 1 + 2))
-
После нажатия на
newArrмы добавляем переменнуюsizeвi. -
Наконец, мы возвращаем значение
newArr.
Связанные ссылки
Расширенное решение кода 2:
function chunkArrayInGroups(arr, size) {
var newArr = [];
while (arr.length) {
newArr.push(arr.splice(0,size));
}
return newArr;
}
Код Объяснение:
- Во-первых, мы создаем переменную.
newArr- пустой массив, на который мы будем нажимать. - Наше
whileпетли петли , пока длина массива в нашем тесте не является 0. - Внутри нашего цикла, мы выдвигаем к
newArrмассива с помощьюarr.splice(0, size). - Для каждой итерации в
whileцикла, он удаляетsizeколичество элементов из передней частиarrи толкать их в виде массиваnewArr. - Наконец, мы возвращаем значение
newArr.
Связанные ссылки
Расширенное решение для кода 3:
function chunkArrayInGroups(arr, size) {
if (arr.length <= size){
return [arr];
}
else {
return [arr.slice(0,size)].concat(chunkArrayInGroups(arr.slice(size),size));
}
}
Код Объяснение:
- Массив меньше размера возвращается вложенным.
- Для любого массива, большего, чем размер, он разбивается на две части. Первый сегмент вложен и согласован со вторым вторым сегментом, который делает рекурсивный вызов.
Связанные ссылки
ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.- Добавьте объяснение своего решения.
- Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced .

- Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . (
НЕ удаляйте существующие имена пользователей )
Увидеть
![]()
Wiki Challenge Solution TemplateдляWiki Challenge Solution Templateдля справки.



