我正在尝试将3个不同的数组转换为单个Hash.
这是3个阵列
@vehicle_numbers = ["Registration Number 1", "Registration Number 2", "Registration Number 1"]
@vehicle_colors = ["red", "blue", "green"]
@allocated = [true, true, true]
Run Code Online (Sandbox Code Playgroud)
我想要实现的是
{1=> ["Registration Number 1", "red", true], 2=> ["Registration Number 2", "blue", true]}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经实现了这一点
{1=> ["Registration Number 1", "red"], 2=>["Registration Number 2", "red"]}
Run Code Online (Sandbox Code Playgroud)
我正在尝试将已分配的密钥添加到现有哈希中,但我无法弄清楚,它有什么问题.
@lines.each do |line|
@method_name = line.split[0]
if @method_name == "park"
@vehicle_numbers << @vehicle_number = line.split[1]
@vehicle_colors << @vehicle_color = line.split[2]
@vehicle_info["#{@vehicle_number}"] = @vehicle_color
# puts @vehicle_info["#{@vehicle_number}"] = @vehicle_color
end
end
@slots = 1.step(@vehicle_numbers.count, 1).to_a
@vehicle_info = Hash[(@slots).zip @vehicle_info ]
@slots.each do |slot|
puts "Allocated slot number: #{slot}"
end
puts @vehicle_info
Run Code Online (Sandbox Code Playgroud)
你可以在一行中完成.
@vehicle_numbers.zip(@vehicle_colors, @allocated).each.with_index(1).to_h.invert
# => {1=>["Registration Number 1", "red", true], 2=>["Registration Number 2", "blue", true], 3=>["Registration Number 1", "green", true]}
Run Code Online (Sandbox Code Playgroud)