रूबी में, मैं एक सरणी में एक मूल्य कैसे पा सकता हूं?
रूबी में, मैं एक सरणी में एक मूल्य कैसे पा सकता हूं?
जवाबों:
मैं अनुमान लगा रहा हूं कि आप यह जानने की कोशिश कर रहे हैं कि क्या सरणी के अंदर एक निश्चित मूल्य मौजूद है, और यदि ऐसा है, तो आप Array # शामिल कर सकते हैं? (मूल्य):
a = [1,2,3,4,5]
a.include?(3) # => true
a.include?(9) # => false
यदि आपका मतलब कुछ और है, तो रूबी एरे एपीआई की जाँच करें
उपयोग करने Array#selectसे आपको मानदंडों को पूरा करने वाले तत्वों की एक सरणी मिलेगी। लेकिन अगर आप तत्व को अपने मापदंड से मिलने वाले तत्व से बाहर निकलने का रास्ता खोज रहे हैं, Enumerable#detectतो जाने के लिए एक बेहतर तरीका होगा:
array = [1,2,3]
found = array.select {|e| e == 3} #=> [3]
found = array.detect {|e| e == 3} #=> 3
अन्यथा आपको कुछ अजीब करना होगा जैसे:
found = array.select {|e| e == 3}.first
Enumerable#selectलेकिन #detectवास्तव में वही है जिसकी मुझे तलाश थी।
array.select{}उन सभी तत्वों से गुजरेगी जो सरणी में देख रहे हैं जो स्थिति से मेल खाते हैं। array.findइसके बजाय शर्त से मेल खाने वाले पहले तत्व को वापस करेगा। तो बेहतर उपयोग array.find{ |e| e == 3 }तोarray.select{ |e| e == 3 }.first
.find_index मेरा मतलब है कि मुझे नहीं पता कि कोई है.find
यदि आप सरणी से एक मान चाहते हैं, तो उपयोग करें Array#find:
arr = [1,2,6,4,9]
arr.find {|e| e%3 == 0} #=> 6
यह सभी देखें:
arr.select {|e| e%3 == 0} #=> [ 6, 9 ]
e.include? 6 #=> true
यह जानने के लिए कि क्या ऐरे में कोई मान मौजूद है आप #in?ActiveSupport का उपयोग करते समय भी उपयोग कर सकते हैं । #in?किसी भी वस्तु के लिए काम करता है जो प्रतिक्रिया करता है #include?:
arr = [1, 6]
6.in? arr #=> true
Array#findरूबी के संदर्भों में कोई नहीं देख सकता । अन्य लोगों ने इसका उल्लेख किया है, क्योंकि यह एक आवश्यक चीज होनी चाहिए।
Enumerable, ruby-doc.org/core-2.7.1/Enumerable.html#method-i-find
ऐशे ही?
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] #=> []
या इस तरह?
a = [ "a", "b", "c" ]
a.index("b") #=> 1
a.index("z") #=> nil
ऐसा करने के लिए आप Array.select या Array.index का उपयोग कर सकते हैं ।
उपयोग:
myarray.index "valuetoFind"
यदि आपके सरणी में मान नहीं है तो आप जिस तत्व को चाहते हैं या शून्य कर सकते हैं, उसका सूचकांक आपको लौटा देगा।
यह उत्तर सभी के लिए है कि स्वीकार किए गए उत्तर को पता नहीं चलता है क्योंकि यह वर्तमान में लिखा गया है।
प्रश्न पूछता है कि किसी सरणी में मान कैसे पाया जाए । स्वीकृत उत्तर दिखाता है कि कैसे जांचा जा सकता है कि मान किसी सरणी में मौजूद है या नहीं ।
उपयोग करने के लिए पहले से ही एक उदाहरण है index, इसलिए मैं selectविधि का उपयोग करके एक उदाहरण प्रदान कर रहा हूं ।
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]
selectपहले से ही 2009 में एक जवाब के रूप में प्रदान किया गया था, आपने एक नमूना स्निपेट प्रदान किया जो थोड़ा बेहतर है। इसलिए इस पर पुनर्विचार करने के बाद, मैंने जो पहले कहा था, उसे वापस लेता हूं।
मुझे पता है कि इस सवाल का जवाब पहले ही दिया जा चुका है, लेकिन मैं यहां कुछ मापदंड के आधार पर एरे में तत्वों को छानने का तरीका खोज रहा हूं। तो यहाँ मेरा समाधान उदाहरण है: का उपयोग करते हुए select, मुझे कक्षा में सभी स्थिरांक मिलते हैं जो "RUBY_" से शुरू होते हैं
Class.constants.select {|c| c.to_s =~ /^RUBY_/ }
अद्यतन: इस बीच मैंने पाया है कि एरे # grep बहुत बेहतर काम करता है। उपरोक्त उदाहरण के लिए,
Class.constants.grep /^RUBY_/
चाल चली।
Class.constants.grep /^RUBY_/चाल चली।
उत्तर के लिए धन्यवाद।
मुझे यह पसंद आया:
puts 'find' if array.include?(value)
आप ऐरे तरीकों के लिए जा सकते हैं।
सभी सरणी विधियों को देखने के लिए सरणी के methodsसाथ फ़ंक्शन का उपयोग करें । उदाहरण के लिए,
a = ["name", "surname"]
a.methods
वैसे आप सरणी में मान की जाँच के लिए विभिन्न विधि का उपयोग कर सकते हैं a.include?("name")।