2014-02-14 56 views
2

使用Ruby 1.8.7,是否有內置的功能類似於Array.map,它允許返回多個值而不是一個?例如。我有一個數組,每個元素包含一個數組 - 我想結束內部數組中的所有值。例如,一個狀態數組,每個狀態都是一個縣的數組 - 我想要一個所有縣的數組。Ruby中的flat_map 1.8.7

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

與更新版本的Ruby中的Array.flat_map相同。 http://ruby-doc.org/core-2.0.0/Enumerable.html#method-i-flat_map

回答

7

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

要獲取所有的縣,你會使用...

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

如果你希望只由一個職級(flat_map確實在Ruby中的當前版本)扁平化,你可以傳遞一個1flatten 。對於你的例子來說這是不必要的,因爲你正在構建一個至多有兩個維度的數組。