以较大的[String]和给定的子数组大小开始,将这个数组拆分为较小的数组的最佳方法是什么? (最后一个数组将小于给定的子数组大小)。
具体示例:分割[“ 1”,“ 2”,“ 3”,“ 4”,“ 5”,“ 6”,“ 7”,“ 8”,“ 9”],最大分割尺寸4
代码将产生[[“ 1”,“ 2”,“ 3”,“ 4”],[“ 4”,“ 5”,“ 6”,“ 7”],[“ 7”,“ 8 “,” 9“]]
显然,我可以手动进行一些操作,但是我觉得像map()或reduce()这样的快速操作可能确实可以完成我想要的事情。
您可以map
将索引遍历到您的数组中:
extension Array {
func chunked(size: Int) -> [[Element]] {
let cnt = self.count
return stride(from: 0, to: cnt, by: size).map {
let end = Swift.min($0 + size, cnt)
return Array(self[$0..<end])
}
}
}
["1","2","3","4","5","6","7","8","9"].chunked(size: 4)
// -> [["1", "2", "3", "4"], ["5", "6", "7", "8"], ["9"]]
["1","2","3","4","5","6","7","8","9"].chunked(size: 3)
// -> [["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"]]