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人いるよ)