You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组[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]]

代码说明

  1. 计算完整分组数:Math.floor(array.length / chunkSize) 得到能组成完整对的数量(示例中为3)。
  2. 生成配对子数组:遍历0到完整分组数-1的索引,将当前索引元素与当前索引+完整分组数的元素配对,组成子数组。
  3. 处理剩余元素:如果数组长度不能被chunkSize整除,将剩余的元素单独作为一个子数组添加到结果中。

内容的提问来源于stack exchange,提问作者dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:55:20