我遇到了一个问题,这给了我一段艰难的时间,因为我刚接触斯威夫特。如果有人能帮忙,我会非常感激的。
我有一个二维的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/