Created
May 9, 2014 16:32
-
-
Save tiagopog/a259fa00e323144d0f39 to your computer and use it in GitHub Desktop.
Some useful array methods.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Add some useful methods to the Ruby Array class. | |
# For Rails, add this class into the "initializers" folder: | |
# config/initializers/array.rb | |
class Array | |
# Group the array's elements. | |
# | |
# Arguments: | |
# r: (Integer) | |
# - Max amount of elements each array's subgroup will have. | |
def arrange(r) | |
array, last, i = [], r, (size.to_f / r.to_f).ceil | |
i.times do |k| | |
array << self[(r * k)..(last - 1)] | |
last += r | |
end | |
array | |
end | |
# Filter array by the even numbers. | |
def even | |
select { |e| e.is_a?(Integer) && e.even? } | |
end | |
# Filter array by the even indexes. | |
def even_indexes | |
values_at(* each_index.select(&:even?)) | |
end | |
# Filter array by the odd numbers. | |
def odd | |
select { |e| e.is_a?(Integer) && e.odd? } | |
end | |
# Filter array by the odd indexes. | |
def odd_indexes | |
values_at(* each_index.select(&:odd?)) | |
end | |
end | |
# | |
# Examples | |
# | |
# Our awesome array... | |
foo = [-2, -1, 0, 1, 2, 3, 'a', :b, /regex/, BasicObject, 4.0, 5.0] | |
# Arrange it into groups of 4 elements. | |
p foo.arrange(4) | |
# Select even numbers. | |
p foo.even | |
# Select elements at even indexes. | |
p foo.even_indexes | |
# Select odd numbers. | |
p foo.odd | |
# Select elements at odd indexes. | |
p foo.odd_indexes |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment