如何检查任何项目是否满足Swift集合中的某些条件?

时间:2015-06-21 05:22:48

标签: swift

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

我认为这不是很好。

  1. 这有点冗长。

  2. 将为数组中的所有项调用filter closure参数,这是不必要的。

  3. 有更好的方法吗?

3 个答案:

答案 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 })