Ruby哈希基于键值查找并返回一个数组

时间:2018-11-22 22:27:25

标签: ruby

我有以下哈希数组:

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

我需要在散列中查找并返回一个包含年份值的数组。仅当键“ right”的值为true时。

[2018, 2017]

4 个答案:

答案 0 :(得分:3)

给出h您的数据结构

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

如果您希望每年仅一次,则可以添加.uniq

答案 1 :(得分:1)

或者,仅循环一次:

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

答案 2 :(得分:0)

如何?

# Example dataset
set.seed(123)
tb1 <- tibble(
  ds = seq(as.Date("2018-01-01"), as.Date("2018-12-31"), by = "day"),
  car = sample(365),
  bus = sample(365),
  regressor = sample(365)
)
head(tb1)

# Create a dataframe for each time series in a list
ts <- tb1 %>% 
  gather("type", "y", -ds, -regressor) %>% 
  split(.$type)

# Forecasting with prophet

library(prophet)
m <- map(ts, prophet)
future <- map(m, make_future_dataframe, periods = 50)
forecast <- map2(m, future, predict)

答案 3 :(得分:0)

您也可以尝试。

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]