Ruby: новый массив из одного значения в массиве объектов - PullRequest
5 голосов
/ 04 марта 2011

Простите, если об этом уже спрашивали, я не смог его найти.

У меня есть массив объектов, например:

[<#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]]

Какой самый лучший «Рубиновый способ» для подобных вещей?

Спасибо!

Ответы [ 4 ]

14 голосов
/ 04 марта 2011

Как насчет этих?

# ['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] }
3 голосов
/ 04 марта 2011

Как насчет:

a.collect {|f| f.name}
0 голосов
/ 04 марта 2011

Чтобы получить ['Foo','Bar','Baz'], вы можете сделать: array.map(&:name)

Для второго вы можете использовать array.map {|a| [a.id, a.name] }

0 голосов
/ 04 марта 2011

Вы можете сделать

array.map { |a| [a.name, a.display_order] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...