Ruby 1.8.7中的flat_map

3

在使用 Ruby 1.8.7 的情况下,是否有类似于 Array.map 的内置功能,可以返回多个值而不仅仅是一个值?例如,我有一个数组,每个元素都包含一个数组 - 我想要得到所有内部数组的值。例如,一个由各州组成的数组,其中每个州又包括一个县的数组 - 我想要一个包含所有县的数组。

@states.map_many { |o| o[:states] }

Array.flat_map 是新版 Ruby 中的一个方法,与此相同。有关更多信息,请访问:http://ruby-doc.org/core-2.0.0/Enumerable.html#method-i-flat_map

1个回答

7

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

要获取所有县,您可以使用...

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

如果你只想要将数组减少一级(目前Ruby版本中flat_map提供此功能),可以向flatten传递一个1参数。但在你的示例中这是不必要的,因为你最多只需要构建一个包含两个维度的数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接