2012-07-01 4 views
0

Ruby에서 해시 배열과 배열이 있습니다. 내 배열 배열에서 키 - 값 쌍 중 하나의 값을 두 번째 배열의 값으로 대체하려고합니다. 이것을 달성하는 가장 깨끗한 방법은 무엇입니까? 해시Ruby : 해시 배열의 키 - 값 쌍의 값을 두 번째 배열의 값으로 바꿉니다.

어레이 :

[{"date":"2012-05-27","total":1},{"date":"2012-05-28","total":9}] 

어레이 :

[1, 10] 

예 (I는 제 2 어레이로부터의 값을 "전체"값을 바꾸려)

원하는 배열의 해시 :

[{"date":"2012-05-27","total":1},{"date":"2012-05-28","total":10}] 

답변

4
array.each_with_index {|e,i| hash_array[i]["total"] = e} 
+0

이 나를 위해 작동하지 않는 것 같습니다. 'array = [1, 10]'및'hash_array = [{: date =>] 2012-05-27 ", : total => 1, {: date =>"2012-05-27 " : total => 9}]'와'array.each_with_index {| e, i | hash_array [i] [ "total"] = e}'결과는'[1, 10]'이고, 찾고있는 것은'[{: date => "2012-05-27", : total => 1 }, {: date => "2012-05-27", : total => 10}] – diasks2

+0

"기호"가 문자열이 아니기 때문에 "전체"를 다음으로 대체하십시오. 귀하의 질문에 문자열 "총"입니다. –

+0

흠, 내가 잘못하고있는 것이 확실하지 않습니다. 같은 결과를 얻습니다 :'array = [1, 10]'과'hash_array = [{: date =>] 2012-05-27 ", : total => 1, {: date =>"2012-05 -27 ", : total => 9}]'및'array.each_with_index {| e, i | hash_array [i] [: total] = e}'결과는'[1, 10]' – diasks2

1
hashes = [{date: "2012-05-27", total: 1},{date: "2012-05-28", total: 9}] #unquoted keys 
values = [1,10] 

hashes.zip(values){|h,v| h[:total] = v} 
p hashes #=>[{:date=>"2012-05-27", :total=>1}, {:date=>"2012-05-28", :total=>10}] 
관련 문제