从哈希中获取数组



我得到了这个:

[{:day=>[1, 2, 3, 4, 5]}, "IceCube::WeeklyRule", 1, 0]

来自:

event.recurring.map { |key, value| value } 

如何获取array (day)及其值?

event.recurring.map { |key, value| value } 

返回

[{:day=>[1, 2, 3, 4, 5]}, "IceCube::WeeklyRule", 1, 0]

所以

event.recurring.map { |key, value| value }.first

返回

{:day=>[1, 2, 3, 4, 5]}

如果您只想要整数数组,请尝试:

event.recurring.map { |key, value| value }.first[:day]

哪个返回

[1, 2, 3, 4, 5]
a = [{:day=>[1, 2, 3, 4, 5]}, "IceCube::WeeklyRule", 1, 0]
a.first.values.flatten

让我们假设您有这个:

event_recurring = {k1: {:day=>[1, 2, 3, 4, 5]}, k2: "IceCube::WeeklyRule", k3: 1, k4: 0}

你可以做的不是.map

event_recurring.flat_map { |_, v| v[:day] if v.is_a? Hash }.compact
#=> [1, 2, 3, 4, 5]

要获得day数组,可以这样尝试。

arr = [{:day=>[1, 2, 3, 4, 5]}, "IceCube::WeeklyRule", 1, 0]
arr.first[:day]

event.recurring.map { |key, value| value }.first[:day] 
arr = [{:day=>[1, 2, 3, 4, 5]}, "IceCube::WeeklyRule", 1, 0]
arr.grep(Hash).first[:day]
#=> [1, 2, 3, 4, 5]
arr = [1, 0, {:day=>[1, 2, 3, 4, 5]}, "IceCube::WeeklyRule"]
arr.grep(Hash).first[:day]
#=> [1, 2, 3, 4, 5]

最新更新