我从服务器收到一个对象数组中的商店信息列表。以下是一个示例 -
"stores": [
{
"name": “Store 1”,
"number": "5381",
"country": "BELGIE",
"latLng": [
50.730614,
4.231847
]
},
{
"name": "Store 2”,
"number": "5220",
"country": "BELGIE",
"latLng": [
50.730614,
4.231847
]
},
{
"name": "Store 3”,
"number": "3982”,
"country": "BELGIE",
"latLng": [
50.7315706,
4.2303477
]
},
{
"name": "Store 4”,
"number": "4179",
"country": "BELGIE",
"latLng": [
50.7262577,
4.245589
]
}]
我在尝试什么?: 我需要过滤掉具有相同latLng值的数组中的商店。
为什么吗 我需要识别这些“相同的latLng”值,并在纬度值上添加一些值(如0.001)的偏移量,这样当我在地图上显示这些商店时,同一位置上的商店会并排显示。
I found this(由 Rob B 回答)作为此方法的参考。
我需要什么?
1.如何使用数组中对象内的值进行过滤?
我在for循环中尝试了类似的东西 -
print("\(allStoresInfo.filter({ $0.latLng![0] == $0.latLng![0] }).count)")
This value always returns 4. I know I am missing some basic sense here but need know what it is :-(
答案 0 :(得分:3)
以下方法修改了与另一家商店的纬度相匹配的每个商店的纬度:
allStoresInfo.map{ currentStore in allStoresInfo.filter{$0.latLng![0] == currentStore.latLng![0]}.enumerated().forEach{ index, matchingStore in
matchingStore.latLng![0] += Double(index)*0.001
}
}
只是一小段建议:不要在数组中存储lat-long值。为它们创建结构/类或使用元组来存储它们。