我得到true以下代码的结果
var elements1:[Int] = [10, 20, 30, 40, 50]
if elements1.contains (50) {
print("true")
}
Run Code Online (Sandbox Code Playgroud)
我有问题找出if condition下面的内容应该是什么,以获得结果,就像true它elements2有50.
var elements2:[[Int]] = [[10], [20, 30], [40, 50]]
Run Code Online (Sandbox Code Playgroud)
您可以使用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)
我可能会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)