Split an array into groups

Given group size

If you would like to split a Ruby array into pairs of two, you can use the Rails ActiveSupport method in_groups_of Show archive.org snapshot :

>> [1, 2, 3, 4].in_groups_of(2)
=> [[1, 2], [3, 4]]

>> [1, 2, 3, 4, 5].in_groups_of(2)
=> [[1, 2], [3, 4], [5, nil]]

>> [1, 2, 3, 4, 5].in_groups_of(2, 'abc')
=> [[1, 2], [3, 4], [5, 'abc']]

>> [1, 2, 3, 4, 5].in_groups_of(2, false)
=> [[1, 2], [3, 4], [5]]

Given group count

If you would like to split a Ruby array into a given number of groups, you can use the Rails ActiveSupport method in_groups Show archive.org snapshot :

>> [1, 2, 3, 4, 5, 6].in_groups(2)
=> [[1, 2, 3], [4, 5, 6]]

>> [1, 2, 3, 4, 5, 6, 7].in_groups(2)
=> [[1, 2, 3, 4], [5, 6, 7, nil]]

>> [1, 2, 3, 4, 5, 6, 7].in_groups(2, 'abc')
=> [[1, 2, 3, 4], [5, 6, 7, 'abc']]

>> [1, 2, 3, 4, 5, 6, 7].in_groups(2, false)
=> [[1, 2, 3, 4], [5, 6, 7]]

Both in_groups_of and in_groups can also take a block that is yielded with each group.

Columns

If you would like to group arrays as “columns” where the first value lives in the first column, the second one in the second, etc. until it wraps, we have a note for that.

Henning Koch Over 13 years ago