How can I find a number of True statements in an Array of Bools in Swift(如何在 Swift 的布尔数组中找到多个 True 语句)
问题描述
我是一名新开发人员,似乎无法弄清楚如何在布尔数组中找到 True 语句的数量.我知道如何按索引而不是按值查找.任何帮助将不胜感激.
I am a new developer and cannot seem to figure out how to find the number of True statements in an Array of Booleans. I know how to find by index but not by value. Any assistance would be appreciated.
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)并简单地计算过滤后数组中剩余元素的数量
Methods for counting number of true entries in a 1D array
One method would be to filter your array of Bool elements (for true) and simply count the number of remaining elements in the filtered array
let arr = [false, true, true, false, true]
let numberOfTrue = arr.filter{$0}.count
print(numberOfTrue) // 3
另一种方法是reduce(展开)数组并为每个等于true
Another approach is to reduce (unfold) the array and increment a counter for each element that equals true
let arr = [false, true, true, false, true]
let numberOfTrue = arr.reduce(0) { $0 + ($1 ? 1 : 0) }
print(numberOfTrue) // 3
或者,传统的 for 循环(带有条件循环签名)方法,与 reduce 方法相当:
Or, a traditional for loop (with conditional in loop signature) approach, comparable top the reduce method:
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] 数组.
Applied to your example: use joined() to achieve a 1D array
The methods above can easily be applied to an array of arrays (of Bool elements: type [[Bool]]) by simply applying .joined() on the [[Bool]] array to sequentially construct a [Bool] array.
/* '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 }
这篇关于如何在 Swift 的布尔数组中找到多个 True 语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 Swift 的布尔数组中找到多个 True 语句
基础教程推荐
- 如何将图像从一项活动发送到另一项活动? 2022-01-01
- UIImage 在开始时不适合 UIScrollView 2022-01-01
- SwiftUI-ScrollViewReader的ScrollTo不滚动 2022-01-01
- Play 商店的设备兼容性问题 2022-01-01
- Xcode UIView.init(frame:) 只能在主线程中使用 2022-01-01
- 如何比较两个 NSDate:哪个是最近的? 2022-01-01
- iOS - UINavigationController 添加多个正确的项目? 2022-01-01
- navigationItem.backBarButtonItem 不工作?为什么上一个菜单仍然显示为按钮? 2022-01-01
- 为什么姜饼模拟器方向卡在应用程序中? 2022-01-01
- Android Volley - 如何动画图像加载? 2022-01-01
