こんにちは、moegi (@moegi_web) です。
今回はRuby で配列を区切る方法についてまとめました。
each_sliceメソッド
each_slice メソッドを使用すると、配列を指定したサイズのグループに分割することができます。n 要素ずつブロックに渡して繰り返し、要素数が n で割り切れないときは最後の回だけ要素数が減ります。
array = [1, 2, 3, 4, 5, 6]
array.each_slice(2) do |slice|
p slice
end
# 出力結果
# [1, 2]
# [3, 4]
# [5, 6]
slice_whenメソッド
slice_when メソッドを使用すると、配列を特定の条件で区切ることができます。
array = [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
array.slice_when { |i, j| i + 1 != j }.to_a
# 出力結果
# [[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]]
each_consメソッド
each_cons メソッドを使用すると、配列を指定した数の要素ごとに区切ることができます。要素を重複ありで n 要素ずつに区切り、ブロックに渡して繰り返します。
array = [1, 2, 3, 4, 5, 6]
array.each_cons(3) do |slice|
p slice
end
# 出力結果
# [1, 2, 3]
# [2, 3, 4]
# [3, 4, 5]
# [4, 5, 6]
each_indexメソッド
each_index メソッドを使用すると、配列を指定した数の要素ごとに区切ることができます。
array = [1, 2, 3, 4, 5, 6]
array.each_index do |i|
p array[i, 3]
break if i + 3 > array.size
end
# 出力結果
# [1, 2, 3]
# [4, 5, 6]
コメント