1.如果最后一个块中的元素少于最小元素,则删除它:
const chunk = (arr, size, min) => {
const chunks = arr.reduce(
(chunks, el, i) =>
(i % size ? chunks[chunks.length - 1].push(el) : chunks.push([el])) && chunks,
[]
);
const l = chunks.length;
if (chunks[l - 1].length < min) chunks.pop();
return chunks;
};
2。将最后一个块添加到前一个块中:
const chunk = (arr, size, min) => {
const chunks = arr.reduce(
(chunks, el, i) =>
(i % size ? chunks[chunks.length - 1].push(el) : chunks.push([el])) && chunks,
[]
);
const l = chunks.length;
if (chunks[l - 1].length < min) chunks[l - 2].push(...chunks.pop());
return chunks;
};
3.将最后一个块平均分配到其他块中:
const chunk = (arr, size, min) => {
const chunks = arr.reduce(
(chunks, el, i) =>
(i % size ? chunks[chunks.length - 1].push(el) : chunks.push([el])) && chunks,
[]
);
const l = chunks.length;
if (chunks[l - 1].length < min) {
const lastChunk = chunks.pop();
let i = 0;
while (lastChunk.length) {
chunks[i % (l - 1)].push(lastChunk.pop());
i += 1;
}
}
return chunks;
};
希望这会有所帮助。