给定任何类型的数组和所需的子数组数量,我需要这个输出:
print([0, 1, 2, 3, 4, 5, 6].splitInSubArrays(into: 3))
// [[0, 3, 6], [1, 4], [2, 5]]
即使元素不足以填充子数组,输出必须包含正确数量的子数组:
print([0, 1, 2].splitInSubArrays(into: 4))
// [[0], [1], [2], []]
我现在有一个可行的实现,但是否有更好(更优雅)的方法来实现这个输出:
extension Array {
func splitInSubArrays(into size: Int) -> [[Element]] {
var output: [[Element]] = []
(0..<size).forEach {
var subArray: [Element] = []
for elem in stride(from: $0, to: count, by: size) {
subArray.append(self[elem])
}
output.append(subArray)
}
return output
}
}