使用Ruby 1.8.7,是否有类似于Array.map
的内置功能,允许返回多个值而不是一个?例如。我有一个数组,每个元素都包含一个数组 - 我想最终得到内部数组的所有值。例如,一个状态数组,每个状态都是一个县的数组 - 我想要一个所有县的数组。
@states.map_many { |o| o[:states] }
与较新版本的Ruby中的Array.flat_map
相同。 http://ruby-doc.org/core-2.0.0/Enumerable.html#method-i-flat_map
答案 0 :(得分:7)
只需使用array.map { ... }.flatten
。
要获得所有县,你可以使用......
@counties = @states.map { |o| o[:states] }.flatten
如果您希望仅展平一个级别(当前版本的Ruby中flat_map
执行此操作),则可以将1
传递给flatten
。对于您的示例,这是不必要的,因为您正在构建一个最多包含两个维度的数组。