রুবিতে, আমি কীভাবে একটি অ্যারেতে একটি মান খুঁজে পেতে পারি?
রুবিতে, আমি কীভাবে একটি অ্যারেতে একটি মান খুঁজে পেতে পারি?
উত্তর:
আমি অনুমান করছি যে আপনি অ্যারের ভিতরে একটি নির্দিষ্ট মান বিদ্যমান কিনা তা সন্ধান করার চেষ্টা করছেন এবং যদি এটি হয় তবে আপনি অ্যারে # অন্তর্ভুক্ত ব্যবহার করতে পারেন? (মান):
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?অ্যারিতে কোনও মান বিদ্যমান কিনা তা সন্ধান করতে আপনি অ্যাক্টিভসপোর্ট ব্যবহার করার সময়ও ব্যবহার করতে পারেন । #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
আপনি এটি করতে অ্যারে.সलेक्ट বা অ্যারে.ইন্ডেক্স ব্যবহার করতে পারেন ।
ব্যবহার করুন:
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_/ }
আপডেট: এর মধ্যে আমি আবিষ্কার করেছি যে অ্যারে # গ্রেপ আরও ভাল কাজ করে। উপরের উদাহরণের জন্য,
Class.constants.grep /^RUBY_/
কৌতুকটি করেছে
Class.constants.grep /^RUBY_/কৌশলটি করেছিলেন।
উত্তরের জন্য ধন্যবাদ।
আমি এটি পছন্দ করেছি:
puts 'find' if array.include?(value)
আপনি অ্যারে পদ্ধতিতে যেতে পারেন।
সমস্ত অ্যারে পদ্ধতি দেখতে অ্যারের methodsসাথে ফাংশন ব্যবহার করুন । উদাহরণ স্বরূপ,
a = ["name", "surname"]
a.methods
অ্যারেতে মান পরীক্ষা করার জন্য আপনি বিভিন্ন পদ্ধতি ব্যবহার করতে পারেন আপনি ব্যবহার করতে পারেন a.include?("name")।