2012-04-09 16 views

답변

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

좋아요, 고마워요! – shub

+0

해시가 임의의 위치에 나타난다면이 방법은 괜찮을 것이지만 항상 두 번째 위치에 있다면 불필요하게 복잡한 것입니다. – 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

'{: search => xs.map (& : last) .inject (: merge)}'는 어떨까요? –

+0

@Michael : 예, 또는 레일스에서 ​​(& : second). 문제는 쌍으로부터 얻을 때 구조화를 취소하는 것이 더 분명하다고 느낍니다. 다른 언어에서는 요소가 배열이 아닌 튜플이됩니다. – tokland

관련 문제