Как определить, содержит ли массив элемент? Подумал, может быть что-то вроде [1, 2, 3].includes(1)
оцениваю как true
.
assert [12,42,33].indexOf(42) == 1
Как определить, содержит ли массив элемент? Подумал, может быть что-то вроде [1, 2, 3].includes(1)
оцениваю как true
.
assert [12,42,33].indexOf(42) == 1
Ответы:
.contains () - лучший метод для списков, но для карт вам нужно будет использовать .containsKey () или .containsValue ()
[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
if(aMap["aKey"]==aValue)
.
Немного синтаксического сахара
1 in [1,2,3]
def m = [a: true]; 'a' in m
→ еще правда def m = [a: false]; 'a' in m
→ ложь!
Для списков используйте contains
:
[1,2,3].contains(1) == true
true == true
, конечно, # шутка
Если вам действительно нужен метод include в ArrayList, просто добавьте его:
ArrayList.metaClass.includes = { i -> i in delegate }
ВАЖНО! Попробуй использовать .contains () для коллекции объектов, например доменов. Если объявление домена содержит EqualsAndHashCode или некоторую другую реализацию equals (), чтобы определить, равны ли эти Ojbects, и вы установили это так ...
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")
тогда .contains (myObjectToCompareTo) будет оценивать данные в myObjectToCompareTo с данными для каждого экземпляра объекта в коллекции. Итак, если ваш метод equals не подходит, как мой, вы можете увидеть неожиданные результаты.
Вы можете использовать оператор членства:
def list = ['Grace','Rob','Emmy']
assert ('Emmy' in list)