Ruby 1.8.7中的flat_map

时间:2014-02-14 03:03:12

标签: ruby ruby-1.8.7

使用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

1 个答案:

答案 0 :(得分:7)

只需使用array.map { ... }.flatten

要获得所有县,你可以使用......

@counties = @states.map { |o| o[:states] }.flatten

如果您希望仅展平一个级别(当前版本的Ruby中flat_map执行此操作),则可以将1传递给flatten。对于您的示例,这是不必要的,因为您正在构建一个最多包含两个维度的数组。