Ruby'de bir dizide bir değeri nasıl bulabilirim?
Ruby'de bir dizide bir değeri nasıl bulabilirim?
Yanıtlar:
Dizi içinde belirli bir değer olup olmadığını bulmaya çalıştığınızı tahmin ediyorum ve durum buysa, Array # include? (Değer) 'i kullanabilirsiniz:
a = [1,2,3,4,5]
a.include?(3) # => true
a.include?(9) # => false
Başka bir şeyi kastediyorsanız, Ruby Array API'sini kontrol edin
Kullanmak Array#selectsize kriterleri karşılayan bir dizi öğe verecektir. Ancak, ölçütlerinizi karşılayan öğeyi diziden çıkarmanın bir yolunu arıyorsanız, gitmenin Enumerable#detectdaha iyi bir yolu olacaktır:
array = [1,2,3]
found = array.select {|e| e == 3} #=> [3]
found = array.detect {|e| e == 3} #=> 3
Aksi takdirde, aşağıdaki gibi garip bir şey yapmanız gerekir:
found = array.select {|e| e == 3}.first
Enumerable#selectama #detecttam olarak aradığım şey buydu.
array.select{}koşula uyanlara bakarak dizideki tüm öğeleri gözden geçirecektir. array.findbunun yerine koşulla eşleşen ilk öğeyi döndürür. Yani tercih kullanım array.find{ |e| e == 3 }sonraarray.select{ |e| e == 3 }.first
.find_index bilmiyorum demek .find
Diziden bir değer bulmak istiyorsanız, şunu kullanın Array#find:
arr = [1,2,6,4,9]
arr.find {|e| e%3 == 0} #=> 6
Ayrıca bakınız:
arr.select {|e| e%3 == 0} #=> [ 6, 9 ]
e.include? 6 #=> true
Bir #in?Dizide bir değer olup olmadığını bulmak için ActiveSupport kullanırken de kullanabilirsiniz . #in?şunlara yanıt veren herhangi bir nesne için çalışır #include?:
arr = [1, 6]
6.in? arr #=> true
Array#findRuby referanslarında hiç göremiyorum . Başkaları bahsettiğinden beri bir Rails olayı olmalı. Hmmm ....
Enumerable, ruby-doc.org/core-2.7.1/Enumerable.html#method-i-find
Bunun gibi?
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] #=> []
veya bunun gibi mi?
a = [ "a", "b", "c" ]
a.index("b") #=> 1
a.index("z") #=> nil
bunu yapmak için Array.select veya Array.index'i kullanabilirsiniz.
kullanın:
myarray.index "valuetoFind"
Bu size istediğiniz öğenin dizinini döndürecektir veya diziniz değeri içermiyorsa sıfır olacaktır.
Bu cevap, kabul edilen cevabın şu anda yazıldığı şekliyle soruyu ele almadığını fark eden herkes içindir.
Soru , bir dizide bir değerin nasıl bulunacağını sorar . Kabul cevap gösterileri nasıl bir değer olup olmadığını kontrol etmek için var olan bir dizide.
Zaten kullanan bir örnek var index, bu yüzden selectyöntemi kullanarak bir örnek veriyorum .
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]
select2009'da zaten bir cevap olarak verilmiş olmasına rağmen , biraz daha iyi olan bir örnek pasaj verdiniz. Bu yüzden yeniden düşündükten sonra, daha önce söylediklerimi geri çekiyorum.
Bu sorunun zaten yanıtlandığını biliyorum, ancak buraya bir Dizideki öğeleri bazı kriterlere göre filtrelemenin bir yolunu aramaya geldim. İşte çözüm selectörneğim : kullanarak , Sınıfta "RUBY_" ile başlayan tüm sabitleri buluyorum
Class.constants.select {|c| c.to_s =~ /^RUBY_/ }
GÜNCELLEME: Bu arada, Array # grep'in çok daha iyi çalıştığını keşfettim. Yukarıdaki örnek için,
Class.constants.grep /^RUBY_/
hile yaptı.
Class.constants.grep /^RUBY_/hile yaptı.
Cevaplarınız için teşekkürler.
Bunu beğendim:
puts 'find' if array.include?(value)
Dizi yöntemlerine gidebilirsiniz.
Tüm dizi yöntemlerini görmek için dizi methodsile işlevi kullanın . Örneğin,
a = ["name", "surname"]
a.methods
Bu arada dizideki değeri kontrol etmek için farklı yöntemler kullanabilirsiniz a.include?("name").