Жесткий кейс с массивом, внутри которого используются шляпы (ruby) - PullRequest
0 голосов
/ 10 марта 2012

У меня есть:
a = [{:a=1,"b=2,:c=3},{:a=4,:b=5,:c=6},..] (включая 2 предмета с 3 ключами)
b = [{:d=7},{:d=8},...] (включая 2 предмета с 1 ключом)

В заключение мне нужно 2 предмета с 4ключи:
a = [{:a=1,:b=2,:c=3,:d=7},{:a=4,:b=5,:c=6,:d=8},..]

Пожалуйста, помогите, попытался сделать следующее:

a.each do |item|
   b.each do |view|
     item.merge!(view)      
   end
end

Но в итоге у меня в двух элементах те же даты, что и для элемента один в массиве b(д = 7).

1 Ответ

4 голосов
/ 10 марта 2012

Прежде всего ваши определения a и b не очень верны.Вам нужно использовать либо символы, либо строки a, это недопустимый ключ для хеша.Также вы должны использовать =>, чтобы указать ключ к значению.Вот как вы можете достичь того, что вы хотите сделать:

a = [{:a=>1,:b=>2,:c=>3},{:a=>4,:b=>5,:c=>6}]
b =[{:d=>7}, {:d=>8}]
a.zip(b) do |x,y|
  x.merge!(y)
end

Zip выполняет операцию с каждой соответствующей парой элементов в a и b - именно то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...