将数组拆分为部分[重复]

Posted

技术标签:

【中文标题】将数组拆分为部分[重复]【英文标题】:Split array to parts [duplicate] 【发布时间】:2021-05-04 20:41:03 【问题描述】:

我正在学习飞镖。我有简单的 JS 代码,将数组拆分为多个部分,例如:

2: [1,2,4,6,8], [14,17,18,19]
3: [1,2,4], [6,8,14], [17,18,19]
4: [1,2], [4,6], [8,14], [17,18,19]

有人可以帮我将后续代码转换为 Dart 吗?

function split(arr, numParts) 
  const partSize = arr.length / numParts | 0;

  return Array
    .from( length: numParts , (n, i) => i * partSize)
    .map((n, i, a) => arr.slice(n, a[i + 1]));


console.log(split([1,2,4,6,8,14,17,18,19,20], 3)); // [1,2,4] [6,8,14] [17,18,19,20]

我只能转换几行:

split(List<int> arr, int numParts) 
  var partSize = arr.length / numParts;


但是在休息部分需要帮助。

【问题讨论】:

这样的? ***.com/a/22274155/2757519 @Ainz-sama 类似但不同的问题。 【参考方案1】:

这样的?我不确定这就是您希望在组之间共享数字的方式:

void main() 
  for (var i = 1; i <= 10; i++) 
    print('$i.toString().padLeft(2) | $split([1, 3, 4, 5, 6, 12, 1, 5, 6, 1], i)');
  
  //  1 | [[1, 3, 4, 5, 6, 12, 1, 5, 6, 1]]
  //  2 | [[1, 3, 4, 5, 6], [12, 1, 5, 6, 1]]
  //  3 | [[1, 3, 4], [5, 6, 12], [1, 5, 6, 1]]
  //  4 | [[1, 3], [4, 5], [6, 12], [1, 5, 6, 1]]
  //  5 | [[1, 3], [4, 5], [6, 12], [1, 5], [6, 1]]
  //  6 | [[1], [3], [4], [5], [6], [12, 1, 5, 6, 1]]
  //  7 | [[1], [3], [4], [5], [6], [12], [1, 5, 6, 1]]
  //  8 | [[1], [3], [4], [5], [6], [12], [1], [5, 6, 1]]
  //  9 | [[1], [3], [4], [5], [6], [12], [1], [5], [6, 1]]
  // 10 | [[1], [3], [4], [5], [6], [12], [1], [5], [6], [1]]


List<List<T>> split<T>(List<T> list, int parts) 
  final partSize = list.length ~/ parts;

  return [
    for (var i = 0; i < parts; i++)
      if (i + 1 < parts)
        list.sublist(i * partSize, (i + 1) * partSize)
      else
        list.sublist(i * partSize)
  ];

此外,如果您的部分多于值,则此解决方案的行为会有些有趣:

11 | [[], [], [], [], [], [], [], [], [], [], [1, 3, 4, 5, 6, 12, 1, 5, 6, 1]]
12 | [[], [], [], [], [], [], [], [], [], [], [], [1, 3, 4, 5, 6, 12, 1, 5, 6, 1]]
13 | [[], [], [], [], [], [], [], [], [], [], [], [], [1, 3, 4, 5, 6, 12, 1, 5, 6, 1]]

【讨论】:

以上是关于将数组拆分为部分[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将字符串拆分为字符串数组[重复]

Android将字符串拆分为数组[重复]

将数组拆分为给定大小的块[重复]

如何在PHP中按字符将数组拆分为关联数组[重复]

如何将字符串数组拆分为新的字符串数组并删除重复项

将数组拆分为按对象属性分组的 2 个数组 [重复]