Swift中是否有办法检查任何项是否符合某些条件?
例如,给定一个整数数组,我想看看它是否包含偶数(这段代码不起作用):
[1, 2, 3].any { $0 % 2 == 0 } // true
[1, 3, 5].any { $0 % 2 == 0 } // false
我目前正在使用以下方法:
let any = [1, 3, 5].filter { $0 % 2 == 0 }.count > 0
我认为这不是很好。
这有点冗长。
将为数组中的所有项调用filter closure参数,这是不必要的。
有更好的方法吗?
答案 0 :(得分:1)
您可以使用方法contains
来完成您想要的任务。它比filter更好,因为它不需要数组的整个交互。你可以这样做:
let arrayInt = [1, 2, 3]
if contains(arrayInt, { $0 % 2 == 0 } ) {
println(true)
}
答案 1 :(得分:1)
在Swift 4.2 / Xcode 10中,您可以使用类allSatisfy
的方法Array
来解决您的问题。这是一个例子:
let a = !([1, 2, 3].allSatisfy { $0 % 2 != 0 })
print(a) // true
let b = !([1, 3, 5].allSatisfy { $0 % 2 != 0 })
print(b) // false
如果当前版本的Xcode在10.0之前,您可以在Xcode9to10Preparation中找到该功能allSatisfy
。您可以使用CocoaPods安装此库。
答案 2 :(得分:0)
为Swift 5更新了正确答案:
[1, 2, 3].contains(where: { $0 % 2 == 0 })