gpt4 book ai didi

arrays - 如何比较一个数组中的对象

转载 作者:搜寻专家 更新时间:2023-11-01 05:55:05 26 4
gpt4 key购买 nike

我有一个对象数组,我想找到重复项。我正在比较经度/经度,不幸的是这些值并不完全相等。

如何找到重复项?

我的示例代码:

var locations = [("Location_A", 49.5858, 9.123456), ("Location_B", 49.5858, 9.123456), ("Location_A", 49.5855, 9.123450), ...]

for location in locations {
//Find duplicate based on longitude and latitude where values < 0.0004
}

在这种情况下,locations[0]locations[2] 应该被检测为重复。

提前致谢!

最佳答案

使用自定义结构代替元组。现在您可以使该结构 Equatable,以允许您的 epsilon 值的方式为该结构定义 ==:

struct Loc : Equatable {
let name : String
let latitude : Double
let longitude : Double
static let epsilon = 0.0004
static func ==(lhs:Loc, rhs:Loc) -> Bool {
if lhs.name != rhs.name { return false }
if abs(lhs.latitude - rhs.latitude) > epsilon { return false }
if abs(lhs.longitude - rhs.longitude) > epsilon { return false }
return true
}
}

让我们测试一下:

let loc1 = Loc(name: "Location_A", latitude: 49.5858, longitude: 9.123456)
let loc2 = Loc(name: "Location_A", latitude: 49.5855, longitude: 9.123450)
print(loc1 == loc2) // true

到那时,用于消除重复项的行之有效的技术将焕发活力。

关于arrays - 如何比较一个数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50766455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com