2012-04-09 10 views

Antwort

1
arr = [["0", {"checkbox_2"=>"on"}], ["2", {"checkbox_1"=>"on"}]] 
hash = Hash[arr.flatten.select{|e| e.is_a? Hash}.collect{|e| e.to_a.flatten}] 
=> {"checkbox_2"=>"on", "checkbox_1"=>"on"} 
+0

Große, vielen Dank! – shub

+0

dieser Weg wäre in Ordnung, wenn der Hash in irgendeiner Position erscheint, aber wenn es immer in der zweiten Position ist, nun, es ist unnötig verwickelt. – tokland

2
xs = [["0", {"checkbox_2"=>"on"}], ["2", {"checkbox_1"=>"on"}]] 
search = {:search => xs.map { |n, h| h }.inject(:merge)} 
# {:search=>{"checkbox_2"=>"on", "checkbox_1"=>"on"}} 
+1

Wie wäre es mit '{: search => xs.map (&: last) .inject (: merge)}'? –

+0

@Michael: Ja, oder (&: 2.) auf Schienen. Die Sache ist, wenn ich von Paaren komme, fühle ich, dass es klarer ist, zu destrukturieren (in anderen Sprachen wären diese Elemente Tupel, nicht Arrays). – tokland

Verwandte Themen