for...of
loop over the given iterable, using Array.prototype.push()
to add each new value to the current chunk
.Array.prototype.length
to check if the current chunk
is of the desired size
and yield
the value if it is.Array.prototype.length
to check the final chunk
and yield
it if it's non-empty.const chunkify = function* (itr, size) {
let chunk = [];
for (const v of itr) {
chunk.push(v);
if (chunk.length === size) {
yield chunk;
chunk = [];
}
}
if (chunk.length) yield chunk;
};
const x = new Set([1, 2, 1, 3, 4, 1, 2, 5]); [...chunkify(x, 2)]; // [[1, 2], [3, 4], [5]]
Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️