Skip to content

Instantly share code, notes, and snippets.

@trestles
Last active September 4, 2019 02:55
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 trestles/ed9f5d104ab259272f694d9b049e49b7 to your computer and use it in GitHub Desktop.
Save trestles/ed9f5d104ab259272f694d9b049e49b7 to your computer and use it in GitHub Desktop.
vinyl
def my_flatten(arr)
result = []
return result unless arr.is_a?(Array)
arr.each do |value|
if value.is_a?(Array)
my_flatten(value).each { |y| result << y}
else
result << value if value.is_a?(String)
end
end
result
end
test_array = ['birds', {name: 'jon'}, 'bees',7, [32, 'other', ['max', 23, 'minnie', ['some',nil,'more']], {name: 'bill'}, 'me'],[]]
puts "starting test array: #{test_array}"
puts "my_flatten: #{my_flatten(test_array)}"
empty_array = []
puts "empty array - should be empty array for result: #{my_flatten([])}"
hash = {name: "joe", some: ['birds', 'bees']}
puts "hash - should be empty array for result: #{my_flatten(hash)}"
puts "nil - should be empty array for result: #{my_flatten(nil)}"
empty_array = []
puts "empty array: #{my_flatten([])}"
hash = {name: "joe", some: ['birds', 'bees']}
puts "hash: #{my_flatten(hash)}"
puts "nil: #{my_flatten(nil)}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment