00001 var baseSlice = require('./_baseSlice'),
00002 isIterateeCall = require('./_isIterateeCall'),
00003 toInteger = require('./toInteger');
00004
00005
00006 var nativeCeil = Math.ceil,
00007 nativeMax = Math.max;
00008
00030 function chunk(array, size, guard) {
00031 if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
00032 size = 1;
00033 } else {
00034 size = nativeMax(toInteger(size), 0);
00035 }
00036 var length = array == null ? 0 : array.length;
00037 if (!length || size < 1) {
00038 return [];
00039 }
00040 var index = 0,
00041 resIndex = 0,
00042 result = Array(nativeCeil(length / size));
00043
00044 while (index < length) {
00045 result[resIndex++] = baseSlice(array, index, (index += size));
00046 }
00047 return result;
00048 }
00049
00050 module.exports = chunk;