Di Ruby, bagaimana saya bisa menemukan nilai dalam array?
Di Ruby, bagaimana saya bisa menemukan nilai dalam array?
Jawaban:
Saya menebak bahwa Anda mencoba menemukan apakah nilai tertentu ada di dalam array, dan jika demikian, Anda dapat menggunakan Array # include? (Value):
a = [1,2,3,4,5]
a.include?(3) # => true
a.include?(9) # => false
Jika Anda bermaksud lain, periksa Ruby Array API
Menggunakan Array#selectakan memberi Anda larik elemen yang memenuhi kriteria. Tetapi jika Anda mencari cara untuk mengeluarkan elemen dari larik yang memenuhi kriteria Anda, Enumerable#detectakan menjadi cara yang lebih baik untuk melakukannya:
array = [1,2,3]
found = array.select {|e| e == 3} #=> [3]
found = array.detect {|e| e == 3} #=> 3
Jika tidak, Anda harus melakukan sesuatu yang canggung seperti:
found = array.select {|e| e == 3}.first
Enumerable#selecttetapi #detectitulah yang saya cari.
array.select{}akan melalui semua elemen dalam array mencari yang cocok dengan kondisi. array.findsebagai gantinya akan mengembalikan elemen pertama yang cocok dengan kondisi. Jadi lebih disukai digunakan array.find{ |e| e == 3 }kemudianarray.select{ |e| e == 3 }.first
.find_index saya tidak tahu apakah ada.find
Jika Anda ingin menemukan satu nilai dari array, gunakan Array#find:
arr = [1,2,6,4,9]
arr.find {|e| e%3 == 0} #=> 6
Lihat juga:
arr.select {|e| e%3 == 0} #=> [ 6, 9 ]
e.include? 6 #=> true
Untuk mengetahui apakah ada nilai dalam Array, Anda juga dapat menggunakan #in?saat menggunakan ActiveSupport. #in?berfungsi untuk objek apa pun yang merespons #include?:
arr = [1, 6]
6.in? arr #=> true
Array#finddi referensi Ruby. Pasti benda Rails karena orang lain telah menyebutkannya. Hmmm ....
Enumerable, ruby-doc.org/core-2.7.1/Enumerable.html#method-i-find
Seperti ini?
a = [ "a", "b", "c", "d", "e" ]
a[2] + a[0] + a[1] #=> "cab"
a[6] #=> nil
a[1, 2] #=> [ "b", "c" ]
a[1..3] #=> [ "b", "c", "d" ]
a[4..7] #=> [ "e" ]
a[6..10] #=> nil
a[-3, 3] #=> [ "c", "d", "e" ]
# special cases
a[5] #=> nil
a[5, 1] #=> []
a[5..10] #=> []
atau seperti ini?
a = [ "a", "b", "c" ]
a.index("b") #=> 1
a.index("z") #=> nil
Anda dapat menggunakan Array.select atau Array.index untuk melakukannya.
Menggunakan:
myarray.index "valuetoFind"
Itu akan mengembalikan Anda indeks elemen yang Anda inginkan atau nihil jika array Anda tidak berisi nilai.
Jawaban ini untuk semua orang yang menyadari bahwa jawaban yang diterima tidak menjawab pertanyaan seperti yang tertulis saat ini.
Pertanyaannya menanyakan bagaimana menemukan nilai dalam sebuah array. Jawaban yang diterima menunjukkan bagaimana memeriksa apakah suatu nilai ada dalam array.
Sudah ada contoh penggunaan index, jadi saya berikan contoh cara selectpakai.
1.9.3-p327 :012 > x = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
1.9.3-p327 :013 > x.select {|y| y == 1}
=> [1]
selecttelah diberikan sebagai jawaban pada tahun 2009, Anda memberikan cuplikan sampel yang sedikit lebih baik. Jadi setelah memikirkannya kembali, saya menarik kembali apa yang saya katakan sebelumnya.
Saya tahu pertanyaan ini telah dijawab, tetapi saya datang ke sini mencari cara untuk memfilter elemen dalam Array berdasarkan beberapa kriteria. Jadi, inilah contoh solusi saya: menggunakan select, saya menemukan semua konstanta di Kelas yang dimulai dengan "RUBY_"
Class.constants.select {|c| c.to_s =~ /^RUBY_/ }
PEMBARUAN: Sementara itu, saya telah menemukan bahwa Array # grep bekerja jauh lebih baik. Untuk contoh di atas,
Class.constants.grep /^RUBY_/
berhasil.
Class.constants.grep /^RUBY_/lakukan triknya.
Terima kasih atas balasannya.
Saya suka ini:
puts 'find' if array.include?(value)
Anda dapat menggunakan metode array.
Untuk melihat semua metode array gunakan methodsfungsi dengan array. Sebagai contoh,
a = ["name", "surname"]
a.methods
Dengan cara Anda dapat menggunakan metode yang berbeda untuk memeriksa nilai dalam array yang dapat Anda gunakan a.include?("name").