JavaScript如何将数组拆分为指定数量的大小不均等的子数组
实现逻辑
- 先获取原数组总长度,计算每个子数组的基础长度,以及无法均分的剩余元素个数
- 前
剩余元素个数个子数组,每个分配基础长度 + 1个元素,把多出来的元素优先放在前面的子数组,保证整体长度尽可能均匀 - 剩下的子数组每个分配
基础长度个元素即可
完整JavaScript代码
function splitArray(arr, splitCount) { const len = arr.length; // 边界情况处理 if (splitCount <= 0) return []; if (splitCount >= len) return arr.map(item => [item]); const baseSize = Math.floor(len / splitCount); const remain = len % splitCount; const result = []; let currentIndex = 0; for (let i = 0; i < splitCount; i++) { const currentSize = i < remain ? baseSize + 1 : baseSize; result.push(arr.slice(currentIndex, currentIndex + currentSize)); currentIndex += currentSize; } return result; }
测试验证
用你给出的示例做测试,输出完全匹配要求:
const testArr = [1,2,3,4,5,6,7,8,9]; // 拆分数量为6 console.log(splitArray(testArr, 6)); // [[1,2],[3,4],[5,6],[7],[8],[9]] // 拆分数量为3 console.log(splitArray(testArr, 3)); // [[1,2,3],[4,5,6],[7,8,9]] // 拆分数量为4 console.log(splitArray(testArr, 4)); // [[1,2,3],[4,5],[6,7],[8,9]]
内容的提问来源于stack exchange,提问作者It's Not That Common
相关产品推荐
相关产品推荐

