Rubyで配列内の値を互いに比較するにはどうすればよいですか?
配列内の値を比較して、配列の最大値を確認したいと思います。
最大値を見つけたいですか?それはすでに行われています。
[1, 5, 3].max # => 5
整数を比較する場合は、
[1,3,2].max will do the work
文字列形式で格納されている整数を比較する場合は、次を試してください。
["1","3","2"].map(&:to_i).max
最初に文字列配列を int 配列に変換し、 max メソッドを適用します
このような比較を頻繁に使用する場合は、実際の配列を int 形式で保存することをお勧めします。これにより、実際にサーバーの作業時間を節約できます。
Ruby 配列 (または Enumerable モジュールを含むもの) にはmax
メソッドがあります:
a = [20, 30, 100, 2, 3]
a.max # => 100
教育目的で独自のものを書きたい場合は、各ポイントで見られる最大値を保持しながら、配列を反復処理できます。
class Array
def my_max
max = nil # Default "max" to nil, since we haven't seen any values yet.
self.each { |x| max = x if (!x || x>max) } # Update with bigger value(s).
max # Return the max value discovered.
end
end
または、関数型プログラミングに興味がある場合は、Enumerablereduce
メソッドmy_max
の使用を検討してください。これは、バージョンのプロセスを一般化し、簡潔にするために三項演算子を使用します。
class Array
def my_max2
self.reduce(nil) { |max,x| (!max || x>max) ? x : max }
end
end
あなたは単に呼び出すことができますmax
a = [1,2,3,4]
a.max # outputs 4
また、あなたができる最小値について
a.min # outputs 1