如何找到数组数组中存在的整数?

Cod*_*221 1 arrays swift

我得到true以下代码的结果

var elements1:[Int] = [10, 20, 30, 40, 50]

if elements1.contains (50) {

    print("true")

}
Run Code Online (Sandbox Code Playgroud)

我有问题找出if condition下面的内容应该是什么,以获得结果,就像trueelements2有50.

var elements2:[[Int]] = [[10], [20, 30], [40, 50]]
Run Code Online (Sandbox Code Playgroud)

dfr*_*fri 6

您可以使用joined()在单个平面中展平嵌套数组,并contains在连接的数组上应用搜索:

let elements2 = [[10], [20, 30], [40, 50]]
if elements2.joined().contains(50) {
    print("Contains 50!")
}
Run Code Online (Sandbox Code Playgroud)

请注意,您不需要包含elements2上面的类型注释,因为类型是推断的(to [[Int]]).

另一种方法是使用contains检查50元素的每个内部数组,并在任何内部数组包含值时继续:

if elements2.map({ $0.contains(50) }).contains(true) {
    print("Contains 50!")
}
Run Code Online (Sandbox Code Playgroud)

或者,使用reduce将内部数组折叠为布尔值,检查50每个内部数组中可能包含的内容(与上面的数组非常相似)

if elements2.reduce(false, { $0 || $1.contains(50) }) {
    print("Contains 50!")
}
Run Code Online (Sandbox Code Playgroud)


Sul*_*han 5

我可能会joined用来简化任务但你可以轻松使用嵌套contains:

var elements2:[[Int]] = [[10], [20, 30], [40, 50]]

if elements2.contains(where: { $0.contains(50) }) {
    print("true")
}
Run Code Online (Sandbox Code Playgroud)