いろいろな方法で書いてみました。
ruby
1hash = {123456=>["A",100], 987654=>["B",150], 123548=>["A",200], 975648=>["A",50], 7584123=>["B",300]}
2
3hash.values.map{|x| x[1] if x[0] == "A"}.compact.sum
4hash.values.map{|v| v[0] == "A" ? v[1] : 0}.sum
5
6hash.values.partition{|x| x[0] == "A"}[0].map{|x| x[1]}.sum
7
8hash.values.group_by{|x| x[0]}["A"].map{|x| x[1]}.sum
9
10hash.values.select{|x| x[0] == "A"}.map{|x| x[1]}.sum
11
12hash.values.reduce(0) {|mem, v| mem += v[0] == "A" ? v[1] : 0}
recuce をつかってもの以外はどれも [100, 200, 50] とか [100, 0, 200, 50, 0] をつくりだしてから、 sum をしています。
map{|x| x[1]},sum とある部分は map(&:last),sum や sum(&:last) としてもよいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/26 13:42
2018/09/26 13:44
2018/09/26 13:49