Как разделать массив на равные части?
Нужно разделить этот массив на 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 }