/**
* @description 根据size 返回对应size的二维数组, 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。
* @author grantguo <https://github.com/ForeverGuo>
* @category array
* @alias array_chunk
* @param { Array } array
* @param { Number } size
* @param { Boolean } origin 剩余元素是否支持组成一个区块,默认支持
* @return 返回二维数组
* @summary 根据size 返回对应size的二维数组
* @example
* chunk(['a', 'b', 'c', 'd'], 2);
* // => [['a', 'b'], ['c', 'd']]
*
* chunk(['a', 'b', 'c', 'd'], 3);
* // => [['a', 'b', 'c'], ['d']]
*
* chunk(['a', 'b', 'c', 'd', 'e'], 3, false);
* // => [['a', 'b', 'c']]
*
*/
export default (array, size, origin = true) => {
const intSize = Math.trunc(size);
if (array.length === 0 || intSize < 1) return [];
let index = 0;
let resultIndex = 0;
// const result = new Array(Math.ceil(array.length / size));
const result = new Array();
while (index < array.length) {
if (!origin && array.slice(index).length < intSize) {
break;
}
result[resultIndex++] = array.slice(index, (index += intSize));
}
return result;
};