Получить ключ из внутреннего хэша - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу получить значение из внутреннего хэша.В данном случае RU - всегда первое значение.

PAYMENT_TYPE_TO_CURRENCY_AND_COUNTRY_MAPPING = {
    zimpler:              { 'EUR' => ['FI'], 'SEK' => ['SE'] },
    qiwi:                 { 'EUR' => ['RU', 'KZ'], 'RUB' => ['RU'], 'KZT' => ['KZ'], 'USD' => ['UA'] },
    payu:                 { 'CZK' => ['CZ'], 'PLN' => ['PL']},
    entercash:            { 'EUR' => ['AT', 'DE', 'FI'], 'SEK' => ['SE'] },
    carulla:              { 'USD' => ['CO'] }
}

Я пробовал это:

PAYMENT_TYPE_TO_CURRENCY_AND_COUNTRY_MAPPING.each do |payment_method_key, array|

        p payment_method_key.to_s /// prints "qiwi" - OK

        p array.keys.first /// prints "EUR" - OK

        p array[array.keys.first] //// prints ["RU", "KZ"] - not OK - need only RU
end

Как я могу реализовать эту функцию?

1 Ответ

0 голосов
/ 20 сентября 2018

Мне не ясно, хотите ли вы получать первый элемент каждый раз (что завершает предыдущий ответ), или если вы хотите, чтобы каждый раз был только «определенный» элемент.Другой способ сделать это, который позволяет вам выбрать конкретные страны, независимо от того, где они находятся в массиве, будет:

PAYMENT_TYPE_TO_CURRENCY_AND_COUNTRY_MAPPING.each_pair do |method, currencies|
    currencies.each_pair do |currency, countries|
        countries.each do |country|
            p country if country == "RU"
        end
    end
end

output:
=> "RU"
   "RU"

return value would be the original hash:
=> {:zimpler=>{"EUR"=>["FI"], "SEK"=>["SE"]},
:qiwi=>{"EUR"=>["RU", "KZ"], "RUB"=>["RU"], "KZT"=>["KZ"], "USD"=>["UA"]},
:payu=>{"CZK"=>["CZ"], "PLN"=>["PL"]},
:entercash=>{"EUR"=>["AT", "DE", "FI"], "SEK"=>["SE"]},
:carulla=>{"USD"=>["CO"]}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...