У меня есть массив, подобный этому:
[{i: 0, abc: true}, {i: 1, abc: true}, {i: 2, abc: true}, {i: 3, abc: true}, {i: 4, abc: true}, {i: 5, abc: true}, {i: 6, abc: true}, {i: 7, abc: true}, {i: 8, abc: true}, {i: 9, abc: true}, {i: 10, abc: true}, {i: 11, abc: true}, ]
Мне тоже нужно разбить его на выходные данные, примерно так:
[[{i: 0, abc: true}, {i: 1, abc: true}, {i: 2, abc: true}], [{i: 3, abc: true}, {i: 4, abc: true}, {i: 5, abc: true}], [{i: 5, abc: true}, {i: 6, abc: true}, {i: 7, abc: true}], [{i: 7, abc: true}, {i: 8, abc: true}, {i: 9, abc: true}], [{i: 9, abc: true}, {i: 10, abc: true}, {i: 11, abc: true}] ]
Последний объект в подмассиве такой же, как первый объект в следующем подмассиве.
В настоящее время я пишу что-то вроде этого:
const chunk = (arr, size) => Array.from( { length: Math.ceil(arr.length / size) }, (v, i) =>
arr.slice(i * size, i * size + size));
, но он разбивается только на указанное c количество элементов. Я также могу достичь своей цели с помощью странных вложенных циклов ... но, может быть, кто-то знает лучше ... проще?