我有以下哈希数组:
{
"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]