Cómo comprobar si un elemento está en una matriz
En Swift, ¿cómo puedo comprobar si existe un elemento en una matriz? Xcode no tiene ninguna sugerencia para contain
, include
o has
, y una búsqueda rápida en el libro no arrojó nada. ¿Alguna idea de cómo comprobar esto? Sé que hay un método find
que devuelve el número de índice, pero ¿hay algún método que devuelve un valor booleano como el de Ruby #include?
?
Ejemplo de lo que necesito:
var elements = [1,2,3,4,5]
if elements.contains(5) {
//do something
}
Aceptado
Rápido 2, 3, 4, 5:
let elements = [1, 2, 3, 4, 5]
if elements.contains(5) {
print("yes")
}
contains()
es un método de extensión de protocolo SequenceType
(para secuencias de Equatable
elementos) y no un método global como en versiones anteriores.
Observaciones:
- Este
contains()
método requiere que los elementos de la secuencia adopten elEquatable
protocolo; compare, por ejemplo, la respuesta de Andrews . - Si los elementos de la secuencia son instancias de una
NSObject
subclase, entonces debe anularlosisEqual:
, consulte Subclase NSObject en Swift: hash vs hashValue, isEqual vs == . - Existe otro
contains()
método, más general, que no requiere que los elementos sean equiparables y toma un predicado como argumento; consulte, por ejemplo, ¿ Taquigrafía para probar si un objeto existe en una matriz para Swift? .
Versiones anteriores de Swift:
let elements = [1,2,3,4,5]
if contains(elements, 5) {
println("yes")
}
Para aquellos que vinieron aquí buscando buscar y eliminar un objeto de una matriz:
veloz 1
if let index = find(itemList, item) {
itemList.removeAtIndex(index)
}
veloz 2
if let index = itemList.indexOf(item) {
itemList.removeAtIndex(index)
}
Rápido 3, 4
if let index = itemList.index(of: item) {
itemList.remove(at: index)
}
Rápido 5.2
if let index = itemList.firstIndex(of: item) {
itemList.remove(at: index)
}