我知道如何找到包含两个数组相同元素的数组,即
let resultArray = firstArray.filter(secondArray.contains)
但如果 firstArray
和 secondArray
都是 CGPoint
数组,我如何找到两者中包含相同 x 值的元素?
最佳答案
如果你不想分配一个额外的 CGPoint
数组来保存 secondArray
的 x
点,你可以使用以下替代方法
let resultAlt1 = firstArray
.filter { pt in secondArray.reduce(false) { $0 || $1.x == pt.x } }
reduce
的短路可能没有显式实现那么好,所以如果性能是个问题,另一种选择是
let resultAlt2 = firstArray.filter {
for pt in secondArray {
if pt.x == $0.x { return true }
}
return false
}
这在本质上与使用 contains
的其他答案的技术相同,但不需要中间 x
点数组。
关于ios - 从包含相同 x 值的两个 CGPoint 数组中查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39051956/