Pregunta Devuelve una matriz de valores de índice de la matriz de Bool donde es verdadero


Cualquiera sabe una manera elegante de devolver una matriz de valores de índice de una matriz de Bools donde los valores son verdaderos. P.ej:

let boolArray = [true, true, false, true]

Esto debería regresar:

[0,1,3]

5
2017-07-06 13:20


origen


Respuestas:


let boolArray = [true, true, false, true]
let trueIdxs = boolArray.enumerate().flatMap { $1 ? $0 : nil }
print(trueIdxs) // [0, 1, 3]

Alternativamente (posiblemente más legible)

let boolArray = [true, true, false, true]
let trueIdxs = boolArray.enumerate().filter { $1 }.map { $0.0 }
print(trueIdxs) // [0, 1, 3]

7
2017-07-06 13:23