swift 4 中的反向坐标数组

Reverse Array of coordinates in swift 4

我正在尝试反转坐标数组。我有这个数组:

[
            [
                9.211615025997162,
                44.30419567985762
            ],
            [
                9.21164184808731,
                44.30412081929745
            ],
            [
                9.21165257692337,
                44.304053636662175
            ],
            [
                9.211606979370117,
                44.3038789614507
            ],
            [
                9.211572110652924,
                44.30381945658962
            ],
            [
                9.211539924144745,
                44.30378874437967
            ],
            [
                9.211507737636566,
                44.30376187118276
            ],
            [
                9.211564064025879,
                44.30377530778277
            ],
            [
                9.211574792861937,
                44.30374075651943
            ],
            [
                9.211574792861937,
                44.30371388330059
            ],
            [
                9.211574792861937,
                44.30369852717
            ],
            [
                9.21154797077179,
                44.303665895379176
            ],
            [
                9.211513102054596,
                44.303650539236024
            ],
            [
                9.211429953575134,
                44.30358911462331
            ],
            [
                9.211349487304688,
                44.30355840229286
            ],
            [
                9.211271703243256,
                44.303537287556324
            ],
            [
                9.21117514371872,
                44.30349505806051
            ],
            [
                9.211151003837585,
                44.303473943301235
            ],
            [
                9.211126863956451,
                44.30342979423452
            ],
            [
                9.211145639419556,
                44.30339908182071
            ],
            [
                9.211183190345764,
                44.303368369390846
            ],
            [
                9.211223423480988,
                44.30331846165803
            ],
            [
                9.211242198944092,
                44.30327623200479
            ],
            [
                9.211177825927734,
                44.30325895622883
            ],
            [
                9.211030304431915,
                44.303228243725634
            ],
            [
                9.210925698280334,
                44.30321096793552
            ],
            [
                9.210874736309052,
                44.303197531206386
            ],
            [
                9.210831820964813,
                44.303197531206386
            ],
            [
                9.21075403690338,
                44.303197531206386
            ],
            [
                9.21068161725998,
                44.3031994507393
            ],
            [
                9.210577011108398,
                44.3031994507393
            ],
            [
                9.210509955883026,
                44.303207128870355
            ],
            [
                9.210440218448639,
                44.303207128870355
            ],
            [
                9.210370481014252,
                44.30322632419366
            ],
            [
                9.2102712392807,
                44.30324743904202
            ],
            [
                9.210190773010254,
                44.30328199059568
            ],
            [
                9.210112988948822,
                44.30328391012582
            ],
            [
                9.210059344768524,
                44.303297346835215
            ],
            [
                9.209954738616943,
                44.30332422024474
            ],
            [
                9.209901094436646,
                44.303339576473235
            ],
            [
                9.209868907928467,
                44.303349174114
            ],
            [
                9.209858179092407,
                44.30338372560779
            ],
            [
                9.209791123867035,
                44.30340292087333
            ],
            [
                9.209697246551514,
                44.30342595518367
            ],
            [
                9.209648966789246,
                44.3034509090097
            ],
            [
                9.209606051445007,
                44.30351809233474
            ],
            [
                9.209579229354858,
                44.30355840229286
            ],
            [
                9.209581911563873,
                44.3035852755829
            ],
            [
                9.209622144699097,
                44.30355840229286
            ],
            [
                9.20967847108841,
                44.30355648277167
            ],
            [
                9.209697246551514,
                    44.30354112659989
                ]
]

而且我想反转坐标,现在在 Long-Lat 到 Lat-Long 中,因此反转整个数组或数组中的每个项目都可以在这里完成工作。我一直试图让它工作,尝试 arrayOfCoords.reversed().reverse() 之类的东西无济于事。那我该怎么做呢?

arrayOfCoords.map{ Array([=10=].reversed()) }

我假设你想反转每个坐标对,但保持坐标对本身的原始顺序。由于您有一个数组数组,因此您必须分别对每个子数组进行操作。 reversed() returns 一个 ReversedCollection 而不是一个数组,所以你必须将它重新初始化为一个数组才能正确使用它。

可能还有更多 elegant/efficient 方法可以做到这一点,但我会考虑使用 compactMap:

let testArray = [[1.123,2.22], [3.11, 4.0], [5.21, 6.19]]
print(testArray)

[[1.123, 2.22], [3.11, 4.0], [5.21, 6.19]]

let flippedElementArray = testArray.compactMap { [=11=].count > 1 ? [[=11=][1], [=11=][0]] : nil }
print(flippedElementArray)

[[2.22, 1.123], [4.0, 3.11], [6.19, 5.21]]

[=13=].count > 1 检查只是确保您至少有 2 个元素,这样您就不会遇到边界错误。如果不是,则该元素的闭包 returns nil,将被 compactMap 过滤掉。否则,它 returns 由第二个元素和第一个元素组成的新数组元素。所有这些元素都存储在最终映射数组 (flippedElementArray) 中。