Saya memiliki berbagai hash, @ ayah.
a_father = { "father" => "Bob", "age" => 40 }
@fathers << a_father
a_father = { "father" => "David", "age" => 32 }
@fathers << a_father
a_father = { "father" => "Batman", "age" => 50 }
@fathers << a_father
Bagaimana saya bisa mencari array ini dan mengembalikan array hash yang mana sebuah blok mengembalikan true?
Sebagai contoh:
@fathers.some_method("age" > 35) #=> array containing the hashes of bob and batman
Terima kasih.
@fathers.find {|father| father["age"] > 35 }
sebagai gantinya.ini akan mengembalikan pertandingan pertama
sumber
#select
- Tapi semua berlaku untuk kasus penggunaan Anda.#detect
akan kembalinil
jika tidak ada kecocokan yang ditemukan, sementara#select
, dalam jawaban @ Jordan, akan kembali[]
.find
alih-alihdetect
untuk kode yang lebih mudah dibacafind
Namun, bisa membingungkan di rel.select
dandetect
tidak sama,select
akan melintangi seluruh array, sementaradetect
akan berhenti segera setelah kecocokan pertama ditemukan. JIKA Anda mencari SATU pertandingan@fathers.select {|f| f["age"] > 35 }.first
vs@fathers.detect {|f| f["age"] > 35 }
untuk kinerja dan keterbacaan, suara saya berlaku untukdetect
jika array Anda terlihat seperti
Dan Anda Ingin Tahu apakah beberapa nilai sudah ada dalam array Anda. Gunakan Metode Temukan
Ini akan mengembalikan objek jika ada nama Hitesh jika tidak mengembalikan nihil
sumber
"hitesh"
, tidak akan mengembalikan hash. Bagaimana kami bisa menjelaskan casing kata juga dalam kasus seperti itu?