Я создал метод, который объединяет два хэша, где одно из значений их ключей одинаково. Метод можно увидеть ниже:
def self.hash_merge_on_location(base, additions_arr, location)
base.each_with_index { |b_hash,b_index|
additions_arr.each do |addition|
addition.each_with_index { |a_hash,a_index|
if b_hash[location] == a_hash[location]
base[b_index] = b_hash.merge(a_hash)
end
}
end
}
base
end
Итак, мой вопрос: как я могу улучшить этот метод? Прямо сейчас у меня есть база (массив хэшей), adds_arr (массив массива хэшей) и местоположение (ключ для сравнения) в качестве моих параметров, и я перебираю хеш в моем базовом массиве, а затем сравниваю это с каждым массивом хэшей в мои добавления_арр. Наконец, я проверяю, совпадает ли текущее значение хеш-функции в моем массиве в моим добавлении_арр со значением хеш-функции в моем базовом массиве.
Пример может быть следующим:
Базовый массив
[{"loan_number" => 10808, "spec_type" => "New"},
{"loan_number" => 10809, "spec_type" => "Old"}]
Массив дополнений
[
[{"loan_number" => 10808, "new_field" => 10},
{"loan_number" => 12383, "new_field" => 19}],
[{"loan_number" => 10809, "new_field" => 11}]
]
Так что сейчас с моим текущим кодом с вводом местоположения "loan_number" вывод hash_merge_on_location будет:
выход
[{"loan_number" => 10808, "spec_type" => "New", "new_field" => 10},
{"loan_number" => 10809, "spec_type" => "Old", "new_field" => 11}]
Есть ли способ, с помощью которого я могу оптимизировать свой метод в его нынешнем виде? Или что-нибудь еще, что я мог сделать, чтобы сделать это лучше?