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

Dart实现整数List按自定义规则分组为4个子列表

自定义规则拆分整数列表为4个子列表

给定整数列表,需按特定规则拆分为4个子列表,具体要求如下:

原列表

var myList = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36];

期望分组结果

var result = [
  [1,2,3,7,8,9,13,14,15],
  [4,5,6,10,11,12,16,17,18],
  [19,20,21,25,26,27,31,32,33],
  [22,23,24,28,29,30,34,35,36]
];

规则分析

从结果可总结出清晰的分组逻辑:

  • 先将原列表按每6个元素划分为一个大区块:[1-6], [7-12], [13-18], [19-24], [25-30], [31-36]
  • 每个大区块拆分为前后各3个元素的小组:比如[1-3]&[4-6]、[7-9]&[10-12]等
  • 按区块位置分配子列表:
    • 前3个大区块的前3元素小组,全部归入第1个子列表;后3元素小组归入第2个子列表
    • 后3个大区块的前3元素小组,全部归入第3个子列表;后3元素小组归入第4个子列表

实现代码(JavaScript)

function splitList(list) {
  // 初始化4个目标子列表
  const result = [[], [], [], []];
  // 按每6个元素为一组遍历原列表
  for (let i = 0; i < list.length; i += 6) {
    // 拆分当前大区块为前后各3个元素
    const firstThree = list.slice(i, i + 3);
    const lastThree = list.slice(i + 3, i + 6);
    // 根据区块位置分配到对应子列表
    if (i < 18) {
      result[0].push(...firstThree);
      result[1].push(...lastThree);
    } else {
      result[2].push(...firstThree);
      result[3].push(...lastThree);
    }
  }
  return result;
}

// 测试示例
var myList = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36];
console.log(splitList(myList));

代码说明

  • 按固定步长6遍历列表,精准拆分出每个大区块
  • 使用slice方法快速拆分区块内的前后3元素小组
  • 用扩展运算符...直接将小组元素合并到目标子列表,代码简洁高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:06:06