JavaScript之把一个数组按照一定长度分成N份
/**
* 拆分数组
* @param {Array} arr 原数组
* @param {Number} len 拆分长度
* @returns {Array}
*/
1、for循环 + slice
function subGroup(arr, len) { var newArr = []; for(var i = 0; i < arr.length; i += len){ newArr.push(arr.slice(i, i + len)); } return newArr; }
2、while循环 + slice
function subGroup(arr, len) { let idx = 0; let newArr = []; while(idx < arr.length) { newArr.push(arr.slice(idx, idx += len)); } return newArr; }
3、while循环 + splice
function subGroup(arr, len) { var cloneArr = arr.concat(); var newArr = []; while(cloneArr.length) { newArr.push(cloneArr.splice(0, len)); } return newArr; }
4、forEach循环 + %
function subGroup(arr, len) { var newArr = []; arr.forEach(function(item, i) { if(i % len === 0) { newArr.push([]); } newArr[newArr.length - 1].push(item); }); return newArr; }
5、forEach循环 + /
function subGroup(arr, len) { var newArr = []; var b; arr.forEach(function(item, index) { var a = Math.floor(index / len); if (b !== a) { b = a; newArr[a] = new Array(); } newArr[a].push(item); }); return newArr; }
6、for循环 + for
function subGroup(arr, len) { var newArr = []; var b = []; var k = 0; for (var i = 0; i < arr.length; ++i) { if (i % len == 0) { b = []; for (var j = 0; j < len; ++j) { if(arr[i+j] == undefined) { continue; } else { b[j] = arr[i+j]; } } newArr[k] = b; k++; } } return newArr; }
7、reduce循环 + %
function subGroup(arr, len) { return arr.reduce((newArr, cur, index) => { var currentArr = newArr[newArr.length - 1]; if(index % len === 0) { newArr.push([cur]); } else { currentArr.push(cur); newArr[newArr.length - 1] = currentArr; } return newArr; }, []); }
最后调用方法:
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]; var newArr = subGroup(arr, 5); console.log(newArr); // [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]

浙公网安备 33010602011771号