Swiftで配列を一定数毎に分割する
配列を一定数毎に分割して返す
一定数刻みで数値のコレクションを返してくれるstride
関数を利用して配列を一定数毎に分割するExtension
を作成できる。
RubyのEnumerable#each_slice
に相当する。
import Foundation
extension Array {
func slice(_ n: Int) -> [ArraySlice<Element>] {
return stride(from: 0, through: count - 1, by: n).map({ self[($0..<$0+n).clamped(to: self.indices)] })
}
}
print(Array(1..<10).slice(3).map({ $0.map({ String($0) }).joined(separator: " ") }).joined(separator: "\n"))
// 1 2 3
// 4 5 6
// 7 8 9