微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算数组数组中的项目?

如果我有一个声明为的对象

let compoundarray = [Array<String>]

是否有一个属性可以给我在compoundarray中包含的所有数组中的字符串数?

我可以通过在每个数组中添加所有项目来实现:

var totalCount = 0
for array in compoundarray {
   totalCount += array.count }
//totalCount = total items in all arrays within compoundarray

但这似乎很笨拙,看起来swift会有一个Array的属性/方法来做到这一点,不是吗?

谢谢!

解决方法

您可以使用添加嵌套数组计数

let count = compoundarray.reduce(0) { $0 + $1.count }

大型阵列的性能比较(在发布配置中在MacBook Pro上编译和运行):

let N = 20_000
let compoundarray = Array(repeating: Array(repeating: "String",count: N),count: N)

do {
    let start = Date()
    let count = compoundarray.joined().count
    let end = Date()
    print(end.timeIntervalSince(start))
    // 0.729196012020111
}

do {
    let start = Date()
    let count = compoundarray.flatMap({$0}).count
    let end = Date()
    print(end.timeIntervalSince(start))
    // 29.841913998127
}

do {
    let start = Date()
    let count = compoundarray.reduce(0) { $0 + $1.count }
    let end = Date()
    print(end.timeIntervalSince(start))
    // 0.000432014465332031
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐