Skip to content

Instantly share code, notes, and snippets.

@tiagopog
Created May 9, 2014 16:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tiagopog/a259fa00e323144d0f39 to your computer and use it in GitHub Desktop.
Save tiagopog/a259fa00e323144d0f39 to your computer and use it in GitHub Desktop.
Some useful array methods.
# 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