【发布时间】:2019-10-12 19:43:33
【问题描述】:
目标:我必须从具有相同标题、附近、坐标.纬度和坐标.经度的数组中删除对象
class Place {
var placeID: String?
var title: String?
var vicinity: String?
var detailsUrl: String?
var openingHours: OpeningHours?
var position: [Double]
var coordinate: CLLocationCoordinate2D {
return CLLocationCoordinate2DMake(position.first ?? 0, position.last ?? 0)
}
我尝试过的一种方法-
extension Array {
func removingDuplicates <T: Hashable>(byKey key: (Element) -> T) -> [Element] {
var result = [Element]()
var seen = Set<T>()
for value in self {
if seen.insert(key(value)).inserted {
result.append(value)
}
}
return result
}
}
let array = list.removingDuplicates(byKey: { "\($0.coordinate.latitude)" + "\($0.coordinate.longitude)" + ($0.title ?? " ") + ($0.vicinity ?? " ") })
但我真的不喜欢上述解决方案。最合适的处理方式是什么?
【问题讨论】:
-
如果可能的话,我会检查该项目是否存在之前插入它。或者无论如何都要使用一套。并添加
Equatable的自定义实现 -
具有相同标题/附近/坐标的地点是否一般被视为平等,还是仅在此特定情况下?
标签: ios arrays swift sorting hash