Как оптимизировать метод слияния двух хешей [RUBY] - PullRequest
0 голосов
/ 05 сентября 2018

Я создал метод, который объединяет два хэша, где одно из значений их ключей одинаково. Метод можно увидеть ниже:

  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}]

Есть ли способ, с помощью которого я могу оптимизировать свой метод в его нынешнем виде? Или что-нибудь еще, что я мог сделать, чтобы сделать это лучше?

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