ios - 从包含相同 x 值的两个 CGPoint 数组中查找元素

标签 ios arrays swift swift2

我知道如何找到包含两个数组相同元素的数组,即

let resultArray = firstArray.filter(secondArray.contains)

但如果 firstArraysecondArray 都是 CGPoint 数组,我如何找到两者中包含相同 x 值的元素?

最佳答案

如果你不想分配一个额外的 CGPoint 数组来保存 secondArrayx 点,你可以使用以下替代方法

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/

相关文章:

C 获取 3 个字符串输入,然后放入字符数组中

javascript - 如何通过相同键的属性重新排列嵌套数组

ios - 如何在 iOS 中将大文件 block 明智地上传到 Azure blob 时减少内存使用量?

swift - Vapor Xcode 项目中的多个目标

ios - 如何在 Swift 中使用 dismissViewControllerAnimated 中的完成处理程序?

ios - iBeacon - 可以使用 startRangingBeacons 进行检测,但不能用于 didEnterRegion

ios - 使用 isgl3D 未正确进行 3D 对象 (.pod) 中的纹理映射

ios - 缺少 TableViewController 类 didSelectRowAtIndexPath

ios - 使用 Objective-C 单击按钮时更改图像

xcode - NSUserDefaults 未全局保存