将数组拆分为部分[重复]
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]]
【讨论】:
以上是关于将数组拆分为部分[重复]的主要内容,如果未能解决你的问题,请参考以下文章