MAGAZINE
ルーターマガジン
								Ruby							
						
						Rubyで配列が内包する要素の状態を判定してboolean型を返すメソッドまとめ
							2019.05.22						
						 
						はじめに
今日は、rubyのArrayオブジェクトからtrue,falseのboolean型を返す、メソッド群を紹介します。
メソッド紹介
・ all?
全ての要素が(ブロックに対して)trueであるか
numbers = [1,2,3,4,5]
p numbers.all?{|number| number.even?}   // => false
booleans = [false,true,false,false,false]
p booleans.all?                           // => false
blank = []
p blank.all?{|number| number.even?}       // =>  true
p blank.all?                              // =>  true
・ none?
全ての要素が(ブロックに対して)falseであるか
numbers = [1,2,3,4,5]
p numbers.none?{|number| number.even?}   // => false
booleans = [false,true,false,false,false]
p booleans.none?                           // => false
blank = []
p blank.none?{|number| number.even?}       // =>  true
p blank.none?                              // =>  true
・ any?
(ブロックに対して)trueである要素が1つ以上存在するか
numbers = [1,2,3,4,5]
p numbers.any?{|number| number.even?}   // => true
booleans = [false,true,false,false,false]
p booleans.any?                           // => true
blank = []
p blank.any?{|number| number.even?}       // =>  false
p blank.any?                              // =>  false
・ one?
(ブロックに対して)trueである要素が1つ存在するか
numbers = [1,2,3,4,5]
p numbers.one?{|number| number.even?}   // => false
booleans = [false,true,false,false,false]
p booleans.one?                           // => true
blank = []
p blank.one?{|number| number.even?}       // =>  false
p blank.one?                              // =>  false
使用例
numbers = [1,nil,3,4,5]
unless numbers.all?
  puts "alert, numbers contain nil"
  numbers = []
end
p numbers
万が一でも、nilが混じってしまったらそんな配列は使い物にならない!
なんて時に、こういう分岐処理を書くと綺麗になりそうですね。
まとめ
空の配列については、存在を確かめる one? と any? はtrueを返し、必ず全ての要素を参照する all? と any? はfalseを返すようです。要注意ですね。
他にも弊社では様々な知見を紹介していますので、是非見て行ってください。 
 ルーターのブログたち
CONTACT
お問い合わせ・ご依頼はこちらから
