Cómo comprobar si un elemento está en una matriz

Resuelto jaredsmith asked hace 10 años • 18 respuestas

En Swift, ¿cómo puedo comprobar si existe un elemento en una matriz? Xcode no tiene ninguna sugerencia para contain, includeo 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 findque 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
}
jaredsmith avatar Jun 08 '14 07:06 jaredsmith
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 Equatableelementos) y no un método global como en versiones anteriores.

Observaciones:

  • Este contains()método requiere que los elementos de la secuencia adopten el Equatableprotocolo; compare, por ejemplo, la respuesta de Andrews .
  • Si los elementos de la secuencia son instancias de una NSObjectsubclase, entonces debe anularlos isEqual:, 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")
}
Martin R avatar Aug 19 '2014 19:08 Martin R

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)
}
DogCoffee avatar Apr 26 '2015 09:04 DogCoffee