views:

42

answers:

1

Hello,

I have a hash which, I have keys that uniquely identify each element within the hash. And within each element, I have an array. So my question is, how do I put another element inside that array within the hash.

{"Apple"=>[1, 5.99], "Banana"=>[5, 9.99]}

I'm looping through a result set, and I'm a little bit lost how to add another element to the array...

Any help is most appreciated

Cheers

+3  A: 

If your hash is called, for example, hsh, then the "Apple" array can be accessed by hsh["Apple"]. You can use this like any variable, so to add a value to that array just do hsh["Apple"] << some_value. Like so:

irb> hsh = { "Apple" => [1, 5.99], "Banana" => [5, 9.99] }
irb> hsh["Apple"] << 9999
=> { "Apple" => [1, 5.99, 9999], "Banana" => [5, 9.99] }
Jordan
Is there a way that I can order the hash so that lets say the highest price array is first ... while keeping the integrity Cheers for the help btw
No, in Ruby hashes are unordered, so you cannot "sort" them as such (though this may change in Ruby 1.9). You would need to use a library that extends Hash, like Ruby Facets' Dictionary class: http://github.com/trans/facets/blob/master/lib/more/facets/dictionary.rb
Jordan
thanks, i'll check it out :)