Ruby哈希根据键值查找并返回一个数组



我有以下哈希数组:

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

我需要在散列中找到并返回一个包含年份值的数组。只有当键"right"的值为true时。

[2018, 2017]

给定h您的数据结构

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

如果你想每年只添加一次,你可以添加.uniq

或者,只循环一次:

h[:itens].each_with_object([]) { |i, arr| arr << i[:year].to_i if i[:right] }
# => [2018, 2017]

这个怎么样:

items.select { |_| _['right'] }.map { |_| _['year'] }

您也可以尝试一下。

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]

最新更新