Enumerableモジュール
map, collectメソッド
ブロックの結果を新しい配列で返す
[1,2,3,4,5].map{|i| i **2 } => [1, 4, 9, 16, 25]
each_with_index
要素とインデックスをブロックに渡し繰り返す
[:a, :b, :c, :d, :e].each_with_index{|v, i| puts "#{v} => #{i}"} a => 0 b => 1 c => 2 d => 3 e => 4 => [:a, :b, :c, :d, :e]
inject , reduce
自身をたたみ込み演算を行う
[1,2,3,4,5].inject(0){|result, v| result + v ** 2} => 55
each_slice, each_cons
要素を指定した数ずつ渡し繰り返す
(1..5).each_cons(3) {|items| p items} [1, 2, 3] [2, 3, 4] [3, 4, 5] => nil (1..5).each_slice(3) {|items| p items} [1, 2, 3] [4, 5] => nil
reverse_each
eachの逆順でブロックに要素を渡す
[1,2,3,4,5].reverse_each {|i| puts i} 5 4 3 2 1 => [1, 2, 3, 4, 5]
その他
all? :全ての要素がTrueならTrue any? : 1つでもTrueならTrue none? : 全てがFalseならTrue one? : 1つの様相だけがTrueならTrue member? , include? : 指定した値と==がTrueになる要素が有ればTrue find , detect : ブロックを評価して最初Trueとなる値を返す find_index : 要素の代わりにIndexを返す find_all , select : ブロックの評価がTrueの全要素を返す grep : 指定したパターンとマッチする要素を全て含んだ配列を返す sort : 要素を<=>で比較し昇順にソートした配列を返す sort_by : ブロックの評価結果を<=>で比較しソートする max, min : 要素の最大、最小値を返す max_by, min_by count :要素数 first : 先頭の要素、引数が有る場合、先頭から引数分 cycle : 要素を無限に繰り返し渡す group_by : ブロックの評価をキーとし同じキーをもつ様相をはいれつとしたはsh付を返す zip : 自身と引数に指定した配列から、1つずつ様相を取り出して配列を作りそれを要素とする配列を返す
例
(1..10).group_by{|v| v % 2} => {0=>[2, 4, 6, 8, 10], 1=>[1, 3, 5, 7, 9]} [[:a, :b, :c].zip([1,2,3]) => [[:a, 1], [:b, 2], [:c, 3]] [:a, :b, :c].zip([1,2,3],["a","b","c"]) => [[:a, 1, "a"], [:b, 2, "b"], [:c, 3, "c"]]