我有一个多维数组,我需要一个所有数组中所有项目的计数,不包括容器数组本身。
Swift中最通用和最习惯的解决方案是什么?我猜这将是一些功能(reduce()
操作?),但不确定最好的整体方法。
明显的非功能方法是简单地遍历数组并计算项的数量。
对于最新的Swift 2.0 beta 6,您可以使用flatten()
let array = [[1, 2, 3], [4, 5], [6]]
array.flatten().count
编辑:刚刚测试了它:懒惰是不需要的,值永远不会被评估,它只是计算endIndex
- startIndex
的每个子集合
您可以这样做:
let array = [[1, 2, 3], [4, 5], [6]]
let countOfAll = array.map { (nested) -> Int in
return nested.count
}.reduce(0, combine: +) // 6
对于Swift 2,你可以使用flatMap
。
var anArray = [[1,0,0], ["asdf","df","lef"], [0,0,1]]
var flatArray = anArray.flatMap { $0 }
print(flatArray.count) // 9