我遇到了一个问题,因为我是Swift的新手,这让我很难受。如果有人能帮助我,我将非常感激。
我有一个二维的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 2D数组中每个.alive的坐标。
谢谢!
答案 0 :(得分:1)
您可以枚举单元格状态并映射结果:
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
的每个实例的索引对。
答案 1 :(得分:0)
您可以使用map
运算符来变换每个元素
let coordinateArray = coordinateTuples.map { [$0, $1] }