누군가 다음 배열을 다음 형식의 해시로 변환하는 데 도움을 줄 수 있습니까?배열을 사용자 정의 형식의 해시로 변환
배열
[["0", {"checkbox_2"=>"on"}], ["2", {"checkbox_1"=>"on"}]]
해시
search=>{"checkbox_2"=>"on", "checkbox_1"=>"on"}
누군가 다음 배열을 다음 형식의 해시로 변환하는 데 도움을 줄 수 있습니까?배열을 사용자 정의 형식의 해시로 변환
배열
[["0", {"checkbox_2"=>"on"}], ["2", {"checkbox_1"=>"on"}]]
해시
search=>{"checkbox_2"=>"on", "checkbox_1"=>"on"}
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"}
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"}}
'{: search => xs.map (& : last) .inject (: merge)}'는 어떨까요? –
@Michael : 예, 또는 레일스에서 (& : second). 문제는 쌍으로부터 얻을 때 구조화를 취소하는 것이 더 분명하다고 느낍니다. 다른 언어에서는 요소가 배열이 아닌 튜플이됩니다. – tokland
좋아요, 고마워요! – shub
해시가 임의의 위치에 나타난다면이 방법은 괜찮을 것이지만 항상 두 번째 위치에 있다면 불필요하게 복잡한 것입니다. – tokland