@nikitasalnikov
Новичок

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

Как разбить массив на равные части?
Есть массив let arr = [1,2,3,4], есть число let n = 2;.
Мне надо, чтобы на выходе получилось newArr = [ [1,2],[2,3],[3,4] ];.

У меня получилось вот так сделать, но по результату выводит не совсем то, что мне надо:

let array = [1,2,3,4];
    let n = 2;
    let newArr = [];
    
    for (let i = 0; i < array.length; i++) {
        
        newArr.push(array.slice(i, i + n));
            
    }
    console.log(newArr);
  • Вопрос задан
  • 623 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
выводит не совсем то что мне надо

Вместо array.length надо крутить цикл до array.length - n + 1.

А вообще, цикл в явном виде не нужен:

const bullshitChunks = (arr, chunkSize) =>
  Array.from(
    { length: arr.length - chunkSize + 1 },
    (n, i) => arr.slice(i, i + chunkSize)
  );


console.log(bullshitChunks([ 1, 2, 3, 4, 5, 6, 7 ], 4));
console.log(bullshitChunks('abcdefg', 5));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@FIREguardSPB
Можно рекурсией. Вот функция:
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));
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы