我有一系列值。例如:
arr = [
"1", "customer_one", "down",
"2", "up",
"3", "down",
"4", "customer_two", "up",
"5", "for_vpn", "down"
]
这些值描述了路由器的端口信息。我想得到像这样的哈希数组:
[
{:name=>"1", :description=>"customer_one", :state=>"down"},
{:name=>"2", :description=>"", :state=>"up"},
{:name=>"3", :description=>"", :state=>"down"},
{:name=>"4", :description=>"customer_two", :state=>"up"},
{:name=>"5", :description=>"for_vpn", :state=>"down"}
]
请注意,在arr[3]
和arr[4]
之间,arr[5]
和arr[6]
之间没有包含描述值的元素,但结果哈希必须包含键描述等于空字符串:description=>""
答案 0 :(得分:4)
arr
.slice_before{|e| e !~ /\D/}
.map do
|name, description = "", state|
{name: name, description: description, state: state}
end