Swift:使用给定示例拆分[String]导致[[String]]的正确方法是什么?

问题描述 投票:0回答:1

以较大的[String]和给定的子数组大小开始,将这个数组拆分为较小的数组的最佳方法是什么? (最后一个数组将小于给定的子数组大小)。

具体示例:分割[“ 1”,“ 2”,“ 3”,“ 4”,“ 5”,“ 6”,“ 7”,“ 8”,“ 9”],最大分割尺寸4

代码将产生[[“ 1”,“ 2”,“ 3”,“ 4”],[“ 4”,“ 5”,“ 6”,“ 7”],[“ 7”,“ 8 “,” 9“]]

显然,我可以手动进行一些操作,但是我觉得像map()或reduce()这样的快速操作可能确实可以完成我想要的事情。

arrays slice
1个回答
0
投票

您可以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"]]

© www.soinside.com 2019 - 2024. All rights reserved.