ben*_*127 8 arrays boolean swift
我是一个新开发人员,似乎无法弄清楚如何在布尔数组中找到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
}
}
}
Run Code Online (Sandbox Code Playgroud)
dfr*_*fri 12
true一维数组中条目数的方法一种方法是过滤Bool元素数组(for true)并简单地计算过滤后数组中剩余元素的数量
let arr = [false, true, true, false, true]
let numberOfTrue = arr.filter{$0}.count
print(numberOfTrue) // 3
Run Code Online (Sandbox Code Playgroud)
另一种方法是reduce(展开)数组并为每个等于的元素递增一个计数器true
let arr = [false, true, true, false, true]
let numberOfTrue = arr.reduce(0) { $0 + ($1 ? 1 : 0) }
print(numberOfTrue) // 3
Run Code Online (Sandbox Code Playgroud)
或者,传统的for循环(带有条件的循环签名)方法,可比顶级reduce方法:
let arr = [false, true, true, false, true]
var trueCounter = 0
for bElem in arr where bElem { trueCounter += 1 }
print(trueCounter) // 3
Run Code Online (Sandbox Code Playgroud)
joined()实现一维数组上述方法可以容易地应用到数组的数组(的Bool:型元件[[Bool]]通过简单地应用).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 }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1975 次 |
| 最近记录: |