反转数组的 for 循环

Reverse a for loop of an array

我正在尝试创建一个函数,该函数应该根据给定的每个坐标计算 90 度和 270 度的坐标..

并保存在arrayLocationOffset数组中

var arrayLocations : [CLLocationCoordinate2D] =
    [
     CLLocationCoordinate2D(latitude: 45.15055543976834, longitude: 11.656891939801518 ),
     CLLocationCoordinate2D(latitude: 45.154446871287924, longitude: 11.66058789179949),
    ]
// simplify only 2 coordinate

我使用这个 for 循环来执行操作:

 func createCoordinatePoly() {
        let polypoint = arrayLocations.count
     
        for i in 0..<polypoint {
          
            let coord = arrayLocations[i]
            
            // calc LH
            
            let lhCoord = coord270(coord: coord)
            
            arrayLocationOffset.append(lhCoord)
            
        }
        
        for i in 0..<polypoint { // shuld revers this for loop and get first the last index
            
            let coord = arrayLocations[i]
            
            // calc LH
            
            let RhCoord = coord90(coord: coord)
            
            arrayLocationOffset.append(RhCoord)
            
        }
        
        debugPrint("aggiunto array poly \(arrayLocationOffset.count)")
        
    }

arrayLocationOffset 必须有特定的顺序,否则我无法在 Mapkit 中正确绘制多边形。 为了获得第二个 forLoop 的特定顺序(我计算 RHside 的地方),我应该从最后一个数组索引开始计算回到第一个...

这可能吗?

谢谢

已解决:

var reversIndex = polypoint-1
        for _ in 0..<polypoint {
            
            let coord = arrayLocations[reversIndex]
            
            // calc LH
            
            let RhCoord = coord90(coord: coord)
            
            arrayLocationOffset.append(RhCoord)
            reversIndex -= 1
        }

我用的是反向索引,从末尾开始...

顾名思义,您可以使用 reversed().

反转数组

您的代码相当 objective-c-ish。枚举数组的更好方法是快速枚举,因为您实际上不需要索引。

for coord in arrayLocations { ...

for coord in arrayLocations.reversed() { ...

然而,还有一种 更快捷 的方法 mapping 阵列

func createCoordinatePoly() {
    arrayLocationOffset.append(contentsOf: arrayLocations.map{coord270(coord: [=12=])})
    arrayLocationOffset.append(contentsOf: arrayLocations.reversed().map{coord90(coord: [=12=])})    
    debugPrint("aggiunto array poly \(arrayLocationOffset.count)")        
}