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
相关产品推荐
相关产品推荐

