我的结果为true
以获取以下代码
var elements1:[Int] = [10, 20, 30, 40, 50]
if elements1.contains (50) {
print("true")
}
如果if condition
中有{50},我在查找true
以下内容时会遇到问题,以便将结果设为elements2
。
var elements2:[[Int]] = [[10], [20, 30], [40, 50]]
答案 0 :(得分:6)
您可以使用joined()
将嵌套数组展平为一个,并在连接的数组上应用contains
搜索:
let elements2 = [[10], [20, 30], [40, 50]]
if elements2.joined().contains(50) {
print("Contains 50!")
}
请注意,您无需在上面列出elements2
的类型注释,因为类型是推断的(到[[Int]]
)。
另一种方法是使用contains
检查50
元素的每个内部数组,并在任何内部数组包含值时继续:
if elements2.map({ $0.contains(50) }).contains(true) {
print("Contains 50!")
}
或者,使用reduce
将内部数组折叠为布尔值,检查每个内部数组中是否包含50
(与上面的数组非常相似)
if elements2.reduce(false, { $0 || $1.contains(50) }) {
print("Contains 50!")
}
答案 1 :(得分:5)
我可能会使用joined
来简化任务,但您可以轻松使用嵌套的contains
:
var elements2:[[Int]] = [[10], [20, 30], [40, 50]]
if elements2.contains(where: { $0.contains(50) }) {
print("true")
}
答案 2 :(得分:1)
您可以使用flatMap
。
let newArray = elements2.flatMap { $0 }
if newArray.contains(50) {
print("true")
}