基于布尔值比较两个数组和匹配元素

DCD*_*CDC 1 ios swift swift3

假设我有两个数组

let array1 = [1,2,3]
let array2 = [false, true, false]
Run Code Online (Sandbox Code Playgroud)

我想从array1返回与true某个索引处的boolean 匹配的值列表.在这个简单的例子中,这将是[2]

如何使用功能方法实现它?

Mar*_*n R 6

"压缩"数组,然后将每对映射到第一个元素,或者 nil根据第二个元素.flatMap()仅返回非零结果:

let array1 = [1,2,3]
let array2 = [false, true, false]

let result = zip(array1, array2).flatMap { $1 ? $0 : nil }
print(result) // [2]
Run Code Online (Sandbox Code Playgroud)