JS Algorithm – Chunk array

Palacio de Bellas Artes, México by https://unsplash.com/@azahed
Given an array and chunk size, divide the array into many subarrays where each subarray is of length size.
Examples
chunk([1, 2, 3, 4], 2) –> [[ 1, 2], [3, 4]]
chunk([1, 2, 3, 4, 5], 2) –> [[ 1, 2], [3, 4], [5]]
chunk([1, 2, 3, 4, 5, 6, 7, 8], 3) –> [[ 1, 2, 3], [4, 5, 6], [7, 8]]
chunk([1, 2, 3, 4, 5], 4) –> [[ 1, 2, 3, 4], [5]]
chunk([1, 2, 3, 4, 5], 10) –> [[ 1, 2, 3, 4, 5]]
First solution:
function chunk(array, size) {
// Declaring new empty array to save the result
// this chunked array wrap the chunked arrays.
const chunked = [];
// To define from where index to which index the
// main array will be sliced
let index = 0;
// Go through every item in the main array
// 0 to the total of items in the array
while (index < array.length) {
// saving the sliced items into the chunked array
chunked.push(array.slice(index, index + size));
// Incrementing the index with the size (original)
index += size;
}
return chunked;
}
chunk([1, 2, 3, 4, 5], 2);
Result:

Second solution:
function chunk(array, size) {
let chunked = [];
for (let item of array) {
let lastElement = chunked[chunked.length - 1];
if (!lastElement || lastElement.length === size) {
chunked.push([item]);
} else {
lastElement.push(item);
}
}
return chunked;
}
chunk([1, 2, 3, 4, 5], 2);
Result:

Third solution:
function chunk(array, size) {
var results = [];
while (array.length) {
results.push(array.splice(0, size));
}
return results;
};
chunk([1, 2, 3, 4, 5], 2);
Result:

By Cristina Rojas.