Just do IT

思うは招く

【Ruby】配列の要素をチェックするメソッドをサンプル付きでまとめる

Ruby(またはRails)で「配列の中に特定の要素を含むかどうか」を知りたいときは多々ある。そんなときに使える主なメソッドをまとめた。

※Enumerableモジュールのものは配列だけではなくハッシュでも使えます。

include?「これ入ってる?」

配列が引数と==で等しい要素を持つときにtrueを返す。「これ入ってる?」みたいな感じ。

Array#include? (Ruby 3.1 リファレンスマニュアル)

data = %w[jayson james gill]

# jaysonっている?
>  data.include? 'jayson'
=> true

# thomasっている?
> data.include? 'thomas'
=> false

any?:「ひとつでもそうだよね?」

配列の要素でどれか1つでも真ならtrueを返す。「どれかひとつでもそうだよね?」みたいな感じ。

Enumerable#any? (Ruby 3.1 リファレンスマニュアル)

data = %w[jayson james gill]

> data.any? 'jayson'
=> true

# 名前がjから始まる人、最低一人はいるよね?
> data.any? { |name| name.start_with?('j')}
=> true #うん、いるよ

# 名前がjで終わる人、最低一人はいるよね?
> data.any? { |name| name.end_with?('j')}
=> false #いねーよ

all?「ぜんぶそうだよね?」

配列の要素すべてが真になるときにtrueを返す。ひとつでも偽ならfalseを返す。「すべてがそうだよね?」みたいな感じ。

Enumerable#all? (Ruby 3.1 リファレンスマニュアル)

data = [1, 2, 3]

# すべてIntegerだよね?
> data.all?(Integer)
=> true #うん、ぜんぶそうだよ

# すべて偶数だよね?
> data.all? { |num| num.even? }
=> false #いや、ちげーよ

none?「ひとつもないよね?」

配列の要素すべてが偽のときにtrueを返す。「ひとつもないよね?」みたいな感じ。

Enumerable#none? (Ruby 3.1 リファレンスマニュアル)

> data = %w[aaa bbb ccc]

# 'ddd'なんてひとつもないよね?
> data.none? 'ddd'
=> true #うん、ないよ

# wordの長さが1のものなんてないよね?
> data.none? { |word| word.size == 1 }
=> true #うん、ないよ

one?「ひとつだけだよね?」

配列の要素に真のものが1つだけあったときにtrueを返す。「ひとつだけだよね?」みたいな感じ。

Enumerable#one? (Ruby 3.1 リファレンスマニュアル)

data = %w[jayson james gill james]

# jaysonはひとつだけなのでtrue
> data.one? 'jayson'
=> true

# jamesは2つあるのでfalse
> data.one? 'james'
=> false

# gから始まる名前の人は一人だよね?
> data.one? { |name| name.start_with?('g') }
=> true #うん、そうだよ

# jで始まる名前の人は一人だよね?
> data.one? { |name| name.start_with?('j') }
=> false #いや、ちげーよ(3人いるよ)