今回は配列の共通要素を取得するintersectionメソッドについてまとめました。これまで使ったことがなかったメソッド、かつ最近知ったメソッドでもあるので自身の備忘録としてもまとめています。
intersectionメソッドとは
intersectionメソッドとは配列の共通要素を取得するメソッドです。
[ 1, 2 ].intersection([ 1 ])
=> [ 1 ]
[ 1, 2, 3 ].intersection([ 1, 2 ])
=> [ 1, 2 ]
要素が重複する場合はそのうち1つを返します。
[ 1, 1, 2 ].intersection([ 1 ])
=> [ 1 ]
[ 1, 2, 2, 3 ].intersection([ 1, 2 ])
=> [ 1, 2 ]
返される要素の順序はレシーバの順序を維持します。
[ 1, 2, 3 ].intersection([ 2, 1 ])
=> [ 1, 2 ]
[ 1, 2, 2, 3, 4 ].intersection([ 4, 1 ])
=> [ 1, 4 ]
intersect?メソッドとは
intersect?メソッドとは配列の共通要素の有無を判定するメソッドです。共通要素が少なくとも1つあればtrueを、なければfalseを返します。
[ 1, 2, 3 ].intersect?([ 3, 4, 5 ])
=> true
[ 1, 2, 3 ].intersect?([ 4, 5, 6 ])
=> false
intersect?メソッドはRuby3.1から追加されたメソッドですが、それ以前はempty?
メソッドやany?
メソッドをチェーンさせて判定していました。
[ 1, 2 ].intersection([ 1 ]).any?
=> true
[ 1, 2 ].intersection([ 1 ]).empty?
=> true
まとめ
- intersectionメソッドとは配列の共通要素を取得するメソッド
- intersect?メソッドとは配列の共通要素の有無を判定するメソッド
参考
- instance method Array#intersection
- instance method Array#intersect?
- Ruby 3.1にArray#intersect?メソッドが追加(翻訳)
今回は配列の共通要素を取得するintersectionメソッドについてまとめました。そこまで利用場面は多くないメソッドかと思いますが、こういった便利メソッドを知っておくといつか役に立ちそうですね。