Ruby:来自对象数组中的一个值的新数组

时间:2011-03-04 15:42:37

标签: ruby arrays object

请原谅我,如果已经被问过,我找不到它。

我有一个对象数组,例如:

[<#Folder id:1, name:'Foo', display_order: 1>,
<#Folder id:1, name:'Bar', display_order: 2>,
<#Folder id:1, name:'Baz', display_order: 3>]

我想将该数组转换为名称数组,例如:

['Foo','Bar','Baz']

并且,虽然我在这里,但如果我可以使用相同的技术从两个参数创建一个数组,即名称和显示顺序如下:

[['Foo',1],['Bar',2],['Baz',3]]

做这种事情最好的'Ruby Way'是什么?

谢谢!

4 个答案:

答案 0 :(得分:14)

这些怎么样?

# ['Foo','Bar','Baz']
array = folders.map { |f| f.name }
# This does the same, but only works on Rails or Ruby 1.8.7 and above.
array = folders.map(&:name)

# [['Foo',1],['Bar',2],['Baz',3]]
array = folders.map { |f| [f.name, f.display_order] }

答案 1 :(得分:3)

怎么样:

a.collect {|f| f.name}

答案 2 :(得分:0)

你可以做到

array.map { |a| [a.name, a.display_order] }

答案 3 :(得分:0)

要获得['Foo','Bar','Baz'],您可以:array.map(&:name)

对于第二个,您可以使用array.map {|a| [a.id, a.name] }