Рубиновый хеш находит базу по значению ключа и возвращает массив - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть следующий массив хэшей:

{
"itens": 
  [
    {"year": "2018", "right": true},
    {"year": "2017", "right": true},
    {"year": "2019", "right": false}
  ]
}

Мне нужно найти внутри хэшей и вернуть массив, содержащий значение года.Только когда клавиша «вправо» имеет значение true.

[2018, 2017]

Ответы [ 4 ]

0 голосов
/ 23 ноября 2018

Вы также можете попробовать это.

data[:itens].keep_if{|a| a[:right]}.map{|b| b[:year].to_i}
# => [2018, 2017]

Или, альтернативно

data[:itens].map{|a| a[:year].to_i if a[:right]}
# => [2018, 2017]
0 голосов
/ 23 ноября 2018

Альтернативно, цикл только один раз:

h[:itens].each_with_object([]) { |i, arr| arr << i[:year].to_i if i[:right] }
# => [2018, 2017]
0 голосов
/ 23 ноября 2018

Как насчет этого:

items.select { |_| _['right'] }.map { |_| _['year'] }
0 голосов
/ 23 ноября 2018

Учитывая h вашу структуру данных

h[:itens].select { |item| item[:right] }.map { |item| item[:year].to_i }

Вы можете добавить .uniq, если хотите каждый год только один раз

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