Skip to content
instance method

Array#one?

() -> bool
(::Array::_Pattern[Elem] pattern) -> bool
() { (Elem obj) -> ::boolish } -> bool
one? → true or false
one? {|element| ... } → true or false
one?(object) → true or false

Returns true if exactly one element of self meets a given criterion.

With no block given and no argument, returns true if self has exactly one truthy element, false otherwise:

Example
[nil, 0].one? # => true
[0, 0].one? # => false
[nil, nil].one? # => false
[].one? # => false

With a block given, calls the block with each element in self; returns true if the block a truthy value for exactly one element, false otherwise:

Example
[0, 1, 2].one? {|element| element > 0 } # => false
[0, 1, 2].one? {|element| element > 1 } # => true
[0, 1, 2].one? {|element| element > 2 } # => false

With argument object given, returns true if for exactly one element element, object === element; false otherwise:

Example
[0, 1, 2].one?(0) # => true
[0, 0, 1].one?(0) # => false
[1, 1, 2].one?(0) # => false
['food', 'drink'].one?(/bar/) # => false
['food', 'drink'].one?(/foo/) # => true
[].one?(/foo/) # => false

Related: see Methods for Querying.

See also #none? #pack #minmax #permutation also in 4.1 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0