数组 – 如何在Swift中的Bools数组中找到许多True语句

我是一个新开发人员,似乎无法弄清楚如何在布尔数组中找到True语句的数量.我知道如何通过索引而不是按价值来查找.任何援助将不胜感激.
let arrayElement = [Bool](repeating: false,count: 10)
var before: [[Bool]] = [[Bool]](repeating: arrayElement,count:10)
for i in 0 ..< 10 {
    for j in 0 ..< 10 {
        if arc4random_uniform(3) == 1 {
            before[i][j] = true  
        }        
    }
}
计算一维数组中真实条目数的方法

一种方法是过滤Bool元素数组(对于true),并简单地计算过滤数组中剩余元素的数量

let arr = [false,true,false,true]
let numberOfTrue = arr.filter{$0}.count
print(numberOfTrue) // 3

另一种方法是减少(展开)数组并为每个等于true的元素递增计数器

let arr = [false,true]
let numberOfTrue = arr.reduce(0) { $0 + ($1 ? 1 : 0) }
print(numberOfTrue) // 3

或者,传统的for循环(带有条件的循环签名)方法,与r​​educe方法相当:

let arr = [false,true]
var trueCounter = 0
for bElem in arr where bElem { trueCounter += 1 }
print(trueCounter) // 3

应用于您的示例:使用joined()来实现一维数组

通过在[[Bool]]数组上简单地应用.joined()来顺序构造[Bool]数组,上面的方法可以很容易地应用于数组数组(Bool元素:type [[Bool]]).

/* 'before' is of type [[Bool]],constructed as described
   in the question */
let numberOfTrueAlt1 = before.joined().filter{$0}.count

let numberOfTrueAlt2 = before.joined().reduce(0) { $0 + ($1 ? 1 : 0) }

var numberOfTrueAlt3 = 0
for bElem in before.joined() where bElem { numberOfTrueAlt3 += 1 }

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...