我遇到了一个问题,这给了我一段艰难的时间,因为我刚接触斯威夫特。如果有人能帮忙,我会非常感激的。
我有一个二维的cellstate数组:[[cellstate]],我正试图找到所有元素的索引,它们都是.alive。索引应返回为[[int]],如下所示:

var cellStates = [ \\initial 2D array
                    [.dead, .alive, .alive],
                    [.alive, .dead, .dead]
                 ]
var coordinatesOfAliveCells = [ \\2D array that I need
                                 [0,1],
                                 [0,2],
                                 [1,0]
                              ]

换言之,获取CellStates二维数组中每个活动的坐标。
谢谢!

最佳答案

您可以枚举单元状态并映射结果:

enum DeadOrAlive {
    case dead
    case alive
}
var cellStates: [[DeadOrAlive]] = [[.dead, .dead, .alive], [.alive, .dead, .dead], [.alive, .dead, .alive], [.dead, .dead]]
let indicesOfAliveCells = cellStates.enumerated()
    .map { top in top.element.enumerated()
        .filter { $0.element == .alive }
        .map { [top.offset, $0.offset] } }
    .filter { $0.count > 0 }
    .flatMap { $0 }
print(indicesOfAliveCells)

输出:
[[0,2],[1,0],[2,0],[2,2]]
这将为每个子数组中找到的.alive的每个实例返回一个索引对。

关于arrays - 如何在二维数组中找到元素索引 - Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57319843/

10-10 21:04