How to extract only needed attribute from an array

I have an object called Tags with id and name ==> [ tag.id , tag.name]

| [1 , aaa] |

| [ 3 , bbb] |

| [ 5 , ccc] |

| [ 6 , dfd] |

| [ 7 , waf] |

| [ 11 , vee] |

There is an array with the list of tags , i just want to extract all
tag.id
as a new array, what is the easiest way to do

There is an array with the list of tags , i just want to extract all
tag.id
as a new array, what is the easiest way to do

Posted via http://www.ruby-forum.com/.

tags.map { |t| t.id }

Thriving K. wrote:

| [ 7 , waf] |

| [ 11 , vee] |

There is an array with the list of tags , i just want to extract all
tag.id
as a new array, what is the easiest way to do

Is this how your array looks?

a = [
[1 , :aaa],
[ 3 , :bbb],
[ 5 , :ccc],
[ 6 , :dfd],
[ 7 , :waf],
[ 11 , :vee]
]

p a.transpose[0] # ==> [1, 3, 5, 6, 7, 11]

Or:

p a.map {|b| b[0]}

Joel VanderWerf wrote:

p a.transpose[0] # ==> [1, 3, 5, 6, 7, 11]

Or:

p a.map {|b| b[0]}

Or:

p a.map {|(id,name)| id }

2009/8/4 Thriving K. [email protected]:

| [ 7 , waf] |

| [ 11 , vee] |

There is an array with the list of tags , i just want to extract all
tag.id
as a new array, what is the easiest way to do

In any case you need method #map. In 1.9* you can even do use
map(&:id):

irb(main):001:0> Tag = Struct.new :id, :name
=> Tag
irb(main):002:0> a = Array.new(5) {|i| Tag.new(i, ā€œnā€*i)}
=> [#, #,
#, #,
#]
irb(main):003:0> a.map(&:id)
=> [0, 1, 2, 3, 4]

Kind regards

robert

Thank you for everyone