できるようになること
複数の条件を用いて、配列から特定の値を見つけることができます。
例)1~10までの数字のうち、5以下かつ2で割れるものを導き出しなさい。
みたいな問題が解けるようになります。
方法
Array#eachとArray#selectを使います。
numbers = (1..10).to_a
rule = [["<", 5],["%", 2]]
rule.each do |b|
numbers.select! do |a|
if b[0] == "<"
a <= b[1]
else
a % b[1] == 0
end
end
end
p numbers # [2,4]
つまりどう言うことか
条件(今回はrule)をeachで回して、その中に判別したいもの(今回はnumber)を入れる必要があります。かつて、逆にして困っており、最近この方法に気づいたのでまとめさせていただきました。
何か同じ悩みで引っかかっていた人の解決になれば嬉しいです。