Bagaimana cara mengetahui jika array berisi elemen? Saya pikir mungkin ada sesuatu seperti [1, 2, 3].includes(1)
yang akan dievaluasi sebagai true
.
assert [12,42,33].indexOf(42) == 1
Bagaimana cara mengetahui jika array berisi elemen? Saya pikir mungkin ada sesuatu seperti [1, 2, 3].includes(1)
yang akan dievaluasi sebagai true
.
assert [12,42,33].indexOf(42) == 1
Jawaban:
.contains () adalah metode terbaik untuk daftar, tetapi untuk peta Anda harus menggunakan .containsKey () atau .containsValue ()
[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
if(aMap["aKey"]==aValue)
.
Gula sintaksis
1 in [1,2,3]
def m = [a: true]; 'a' in m
→ benar belum def m = [a: false]; 'a' in m
→ salah!
Untuk daftar, gunakan contains
:
[1,2,3].contains(1) == true
true == true
, tentu saja #canda
Jika Anda benar-benar ingin memasukkan metode Anda pada ArrayList, cukup tambahkan:
ArrayList.metaClass.includes = { i -> i in delegate }
Gotcha PENTING untuk menggunakan .contains () pada Kumpulan Objek, seperti Domain. Jika deklarasi Domain berisi EqualsAndHashCode, atau implementasi equals lainnya () untuk menentukan apakah Ojbect itu sama, dan Anda telah mengaturnya seperti ini ...
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")
maka .contains (myObjectToCompareTo) akan mengevaluasi data di myObjectToCompareTo dengan data untuk setiap instance Object dalam Koleksi. Jadi, jika metode equals Anda tidak cukup, seperti milik saya, Anda mungkin melihat hasil yang tidak terduga.
Anda dapat menggunakan operator Keanggotaan:
def list = ['Grace','Rob','Emmy']
assert ('Emmy' in list)