Finding an element in an array of hashes

Hi,

I have an array of Facebooker::User objects

so friends.class = Array
and friends[1].class = Facebooker::User

Facebooker::User objects which are basically hashes.

each friend has a unique facebook_id so
friends[1].facebook.id.class = Integer

I'd like to find the array member with a particular facebook_id.

friends.find_by_id(12345) should return the corresponding
Facebooker::User object

What's the cleanest way to do this?
Do I have to iterate over the array members or is there a method in Ruby
that does this?

Thanks

Alex

···

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

Alex Stupakov wrote:

Hi,

I have an array of Facebooker::User objects
so friends.class => Array
and friends[1].class => Facebooker::User

Facebooker::User are objects which are basically hashes.
friends[1].facebook.id.class => Integer

I'd like to find the array member with a particular facebook_id.
friends.find_by_id(12345) should return the corresponding
Facebooker::User object

What's the cleanest way to do this?
Do I have to iterate over the array members or is there a method in Ruby
that does this?

"basically" hashes? That doesn't look like hash syntax to me..

friends.find { |friend| friend.facebook.id = 12345 }

http://ruby-doc.org/core/classes/Enumerable.html#M003122

···

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

Aldric Giacomoni wrote:

"basically" hashes? That doesn't look like hash syntax to me..

You're right, my mistake.
Thanks for the suggestion, it works great, and for the link.

···

friends.find { |friend| friend.facebook.id = 12345 }

module Enumerable - RDoc Documentation

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

Careful, there should be a == there...

Jesus.

···

On Fri, Dec 4, 2009 at 9:37 PM, Aldric Giacomoni <aldric@trevoke.net> wrote:

Alex Stupakov wrote:

Hi,

I have an array of Facebooker::User objects
so friends.class => Array
and friends[1].class => Facebooker::User

Facebooker::User are objects which are basically hashes.
friends[1].facebook.id.class => Integer

I'd like to find the array member with a particular facebook_id.
friends.find_by_id(12345) should return the corresponding
Facebooker::User object

What's the cleanest way to do this?
Do I have to iterate over the array members or is there a method in Ruby
that does this?

"basically" hashes? That doesn't look like hash syntax to me..

friends.find { |friend| friend.facebook.id = 12345 }