Closed. This question needs details or clarity. It is not currently accepting answers. Learn more
想改进这个问题吗添加细节并通过editing this post澄清问题。
四年前关闭。
解决这个问题的常用方法是使用flatten方法。
这可以通过其他方式实现吗,比如不使用flatten

def flatten_array(arr)
  return arr.flatten
end

print flatten_array([1,2,3,4,[1,2,3,4],5])

最佳答案

class Array
  def flattify
    each_with_object([]) do |element, flattened|
      flattened.push *(element.is_a?(Array) ? element.flattify : element)
    end
  end
end

[1,2,3,4,[1,2,3,4],5].flattify # => [1, 2, 3, 4, 1, 2, 3, 4, 5]

非猴子补丁版本:
def flattify(array)
  array.each_with_object([]) do |element, flattened|
    flattened.push *(element.is_a?(Array) ? flattify(element) : element)
  end
end

flattify([1,2,3,4,[1,2,3,4],5]) # => [1, 2, 3, 4, 1, 2, 3, 4, 5]

关于ruby - 在不使用内置“flatten”方法的情况下将Ruby数组展平,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31940239/

10-14 19:25