arrays - 如何在 Swift 的 boolean 数组中找到多个 True 语句

标签 arrays swift boolean

我是一名新开发人员,似乎无法弄清楚如何在 boolean 数组中找到 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  
        }        
    }
}

最佳答案

计算一维数组中true条目数的方法

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

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

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

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

或者,传统的 for 循环(带有条件循环签名)方法,可与 reduce 方法相媲美:

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

应用于你的例子:使用joined()实现一维数组

通过简单地应用 .joined( )[[Bool]] 数组上依次构造一个 [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 }

关于arrays - 如何在 Swift 的 boolean 数组中找到多个 True 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39984933/

相关文章:

c# - 如果 bool 为真则返回 int

java - 使用泛型创建 Array 对象

c - 使用指针对数组进行排序 - C 编程

ios - View 不会像在 Storyboard 中那样出现在 iPhone 上

python - 程序总是返回真

java - 使用 "Boolean equals()"比较 ArrayList 中保存的对象

PHP 将数组中的重复项与多个字符串数据进行比较

javascript - javascript中根据不同时间段组合两个对象数组

ios - 如何创建按下 UITableViewRowAction 时显示的编辑模态视图 Controller ?

swift - swift 文件的输出编译持续时间