Ich habe eine Reihe von CLLocations
. Mein Ziel ist es, die letzte Position im Array mit der gleichen Position wie die folgenden Positionen zu finden und dann alle folgenden Objekte zu entfernen.Aufzählen zum Ausfiltern von ähnlichen Objekten in einem Array
Beispiel:
[lat: 11.123, long: 11.123,
lat: 12.345, long: 123.123,
lat: 14.124, long: 14.124,
lat: 16.1661, long: 16.1616,
lat: 15.1515, long: 15.1515,
lat: 15.1515, long: 15.1515, //Remove
lat: 15.1515, long: 15.1515] //Remove
Ich mag würde das Array mutieren sie gespeichert sind in, statt einen neuen zu schaffen. so weit
Mein Versuch:
var reversedLocations = Array(locations.reverse())
for (index,location) in reversedLocations.enumerate() {
if index+1 <= reversedLocations.count-1 {
let distanceToNext = LocationInterface.sharedInterface.distanceBetweenLocations(first: location, last: locations[index+1])
if distanceToNext < 10 {
reversedLocations.removeAtIndex(reversedLocations.indexOf(location)!)
toDate = reversedLocations.first!.timestamp
}
}
}
Aber dieser Code ist verwirrend, und ich bin nicht sicher, es ist die beste Art und Weise, es zu tun. Die Funktion ist nur ein Chaos, wie ich das Array im Enumeration mutieren, so dass der Index nicht korrekt ist. Gibt es Arrays.reduce, .sort, .map oder ähnliche, die mir dabei helfen können?
sind:
Die Lösung der OP verwendet, um alle anderen Duplikate andere als die Letzten entfernen Bist du sicher, dass das ein Array ist? – Carpsen90
Das Beispiel ist kein syntax-korrektes Array, nein. Ich tippte das in mir selbst. Die Standorte sind in einem Array. –