如何将数组[1,2,3,4,5,6,7]分割为[[1,4],[2,5],[3,6],[7]]?
实现预期的数组分割效果
你的需求是将数组按交叉分组的方式分割,而非顺序切分。核心思路是先找出完整的分组数量,再将前N个元素与接下来的N个元素一一配对,最后处理剩余的单个元素。
解决方案代码
const convertToSubArray = (array, chunkSize = 2) => { const result = []; const fullGroups = Math.floor(array.length / chunkSize); const remainder = array.length % chunkSize; // 生成配对的子数组 for (let i = 0; i < fullGroups; i++) { result.push([array[i], array[i + fullGroups]]); } // 添加剩余的单个元素(如果有) if (remainder > 0) { result.push(array.slice(fullGroups * chunkSize)); } return result; }; // 测试 const arr = [1,2,3,4,5,6,7]; console.log(convertToSubArray(arr)); // 输出: [[1,4], [2,5], [3,6], [7]]
代码说明
- 计算完整分组数:
Math.floor(array.length / chunkSize)得到能组成完整对的数量(示例中为3)。 - 生成配对子数组:遍历0到完整分组数-1的索引,将当前索引元素与当前索引+完整分组数的元素配对,组成子数组。
- 处理剩余元素:如果数组长度不能被chunkSize整除,将剩余的元素单独作为一个子数组添加到结果中。
内容的提问来源于stack exchange,提问作者dev
相关产品推荐
相关产品推荐

