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

Нужно разделить этот массив на 4 равные части)

const arr = [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4]

//result 
newArr = [
    [
      1,1,1,1
    ],
    [
      2,2,2,2
    ],
    [
      3,3,3,3
    ],
    [
     4,4,4,4
    ]
]

Ответы (4 шт):

Автор решения: Zhihar

можно сделать так, но последние элементы из которых нельзя сформировать 4 элемента в массив не попадут

const arr = [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5]

let res = []

const count = parseInt(arr.length / 4)

for (i = 0; i < count; i++) {
  res.push(arr.slice(i * 4, i * 4 + 4))
}

console.log(res)

а вот в таком коде попадут и те элементы, которые не формируют 4 элемента

    const arr = [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5]

    let res = []

    const count = parseInt(arr.length / 4)

    for (i = 0; i < count; i++) {
      res.push(arr.slice(i * 4, i * 4 + 4))
    }
    
    if (count * 4 < arr.length) {
      res.push(arr.slice(count * 4))
    }

    console.log(res)

→ Ссылка
Автор решения: De.Minov

function Spliter(arr, div) {
  let out = [];
  for(let i = 0; i < Math.ceil(arr.length / div); i++) {
    out.push(arr.slice(i*div, i*div+div));
  }
  return out;
}

console.info(Spliter([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16], 4));

console.info(Spliter([1,2,3,4,5,6,7,8,9,10,11], 4));
.as-console-row-code {white-space: normal !important;}

→ Ссылка
Автор решения: Алексей Шиманский

function test(arr, num, result = []) {
    if (arr.length === 0)
        return result;
       
    result.push(arr.splice(0, num));    
    
    return test(arr, num, result);
}

result = test([1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4], 4);
console.log(JSON.stringify(result));

console.log('--------------------------------------------------');

result = test([1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5], 4);
console.log(JSON.stringify(result));

→ Ссылка
Автор решения: Qwertiy

var a = [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4]
var bs = a.length + 3 >> 2
var res = [1,2,3,4].map((x, i) => a.slice(i*bs, x*bs))
console.log(res)
.as-console-wrapper.as-console-wrapper { max-height: 100vh }

→ Ссылка