const errFirstArgument = 'Invalid Argument: Expected an array as first argument'; const errSecondArguemnt = 'Invalid Argument: Expected a positive number as second argument'; function validateArguments(array, size) { if (!Array.isArray(array)) { throw new Error(errFirstArgument); } if (typeof size !== 'number' || size < 0) { throw new Error(errSecondArguemnt); } if (size > array.length) { return [array]; } return 0; } function arrayChunk({ array, size }) { validateArguments(array, size); const result = []; for (let i = 0; i < array.length; i += 1) { const lastChunk = result[result.length - 1]; if (!lastChunk || lastChunk.length === size) { result.push([array[i]]); } else { lastChunk.push(array[i]); } } return result; } function chunkUsingSlice({ array, size }) { validateArguments(array, size); let index = 0; const result = []; while (index < array.length) { result.push(array.slice(index, index + size)); index += size; } return result; } module.exports = { errFirstArgument, errSecondArguemnt, arrayChunk, chunkUsingSlice, };