2014-04-11 4 views
-1

У меня есть массив хэшей, и хэш:Заменить хэш, если ключ присутствует и вставить, если не

original = [{"a"=>1}, {"a"=>2}] 
new = {"a"=>1, "z"=>2} 

Я хочу, чтобы заменить хэш в original, если он имеет особое значение для ключа "a", предположим, 1. И если эта пара значений ключа отсутствует, то я хочу вставить этот хеш в качестве другого элемента. Результат должен быть:

original = [{"a"=>1, "z"=>2},{"a"=>2}] 

И если new выглядит следующим образом:

new = {"a"=>2, "z"=>2} 

тогда я хочу original стать:

original = [{"a"=>2, "z"=>2},{"a"=>1},{"a"=>2}] 

Как сделать это без итерации? Я попробовал следующий код, но вставка не происходит, когда пара ключевых значений отсутствует. Как я могу это сделать за один раз?

ответ

0

Вы можете сделать это, используя метод Ruby's has_key?, он вернет true или false. Например,

new = {"a"=>2, "z"=>2} 

if new.has_key?("a") 
    # do this 
else 
    # do this 
end 
+0

FYI, 'Ruby! = Rails' –

+0

Ну, спасибо, что исправили меня! ;) – RSB

Смежные вопросы