Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hash map in ruby?

I'm trying to get this object, passed via AJAX:

  Parameters: {"status"=>{"1"=>["14", "1"], "2"=>["7", "8", "12", "13"]}}

into something like:

14 -> 1
1 -> 1
7 -> 2

over which I can iterate.

What's the most elegant way of achieving this?

like image 740
cjm2671 Avatar asked Apr 27 '26 10:04

cjm2671


1 Answers

flat_inverse = {}
parameters["status"].each { |key, values| values.each { |v| flat_inverse[v] = key } }

flat_inverse
# {"14"=>"1", "1"=>"1", "7"=>"2", "8"=>"2", "12"=>"2", "13"=>"2"}

#or more functional
Hash[*parameters["status"].map { |k, vs| vs.zip([k] * v.length) }.flatten]
like image 51
Matt Avatar answered Apr 29 '26 04:04

Matt



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!