Skip to content
instance method

Array#max

() -> Elem
() { (Elem a, Elem b) -> ::Integer? } -> Elem
(::int n) -> ::Array[Elem]
(::int n) { (Elem a, Elem b) -> ::Integer? } -> ::Array[Elem]
max → element
max(count) → new_array
max {|a, b| ... } → element
max(count) {|a, b| ... } → new_array

Returns one of the following:

  • The maximum-valued element from self.

  • A new array of maximum-valued elements from self.

Does not modify self.

With no block given, each element in self must respond to method <=> with a numeric.

With no argument and no block, returns the element in self having the maximum value per method <=>:

Example
[1, 0, 3, 2].max # => 3

With non-negative numeric argument count and no block, returns a new array with at most count elements, in descending order, per method <=>:

Example
[1, 0, 3, 2].max(3)   # => [3, 2, 1]
[1, 0, 3, 2].max(3.0) # => [3, 2, 1]
[1, 0, 3, 2].max(9)   # => [3, 2, 1, 0]
[1, 0, 3, 2].max(0)   # => []

With a block given, the block must return a numeric.

With a block and no argument, calls the block self.size - 1 times to compare elements; returns the element having the maximum value per the block:

Example
['0', '', '000', '00'].max {|a, b| a.size <=> b.size }
# => "000"

With non-negative numeric argument count and a block, returns a new array with at most count elements, in descending order, per the block:

Example
['0', '', '000', '00'].max(2) {|a, b| a.size <=> b.size }
# => ["000", "00"]

Related: see Methods for Fetching.

See also #map! #min #map #minmax also in 4.1 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0