¿Cómo puedo saber si una matriz contiene un elemento? Pensé que podría haber algo como [1, 2, 3].includes(1)
lo que evaluaría como true
.
assert [12,42,33].indexOf(42) == 1
¿Cómo puedo saber si una matriz contiene un elemento? Pensé que podría haber algo como [1, 2, 3].includes(1)
lo que evaluaría como true
.
assert [12,42,33].indexOf(42) == 1
Respuestas:
.contains () es el mejor método para las listas, pero para los mapas deberá usar .containsKey () o .containsValue ()
[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
if(aMap["aKey"]==aValue)
.
Un poco de sintaxis de azúcar
1 in [1,2,3]
def m = [a: true]; 'a' in m
→ verdadero pero def m = [a: false]; 'a' in m
→ falso!
Para listas, use contains
:
[1,2,3].contains(1) == true
true == true
, por supuesto #joke
Si realmente desea su método de inclusión en una ArrayList, simplemente agréguelo:
ArrayList.metaClass.includes = { i -> i in delegate }
IMPORTANTE Gotcha para usar .contains () en una colección de objetos, como dominios. Si la declaración de dominio contiene un EqualsAndHashCode, o alguna otra implementación de equals () para determinar si esos Ojbects son iguales, y lo ha configurado así ...
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")
entonces .contains (myObjectToCompareTo) evaluará los datos en myObjectToCompareTo con los datos para cada instancia de Object en la Colección. Entonces, si su método de igualdad no está a la altura del tabaco, como el mío no, es posible que vea resultados inesperados.
Puede usar el operador de Membresía:
def list = ['Grace','Rob','Emmy']
assert ('Emmy' in list)