Ruby 将内部数组转换为哈希
我有以下数组Ruby 将内部数组转换为哈希,ruby,Ruby,我有以下数组 a=[["name","age"], ["Raja","29"], ["Gop","30"] ["pal","21"] ] 我需要下面的散列 a=[{"name"=>"Raja","age"=>"29"},{"name"=>"Gop","age"=>"30"},{"name"=>"Gop","age"=>"30"},{"name"=>"pal","age"=>"21"}] 它所做的是
a=[["name","age"],
["Raja","29"],
["Gop","30"]
["pal","21"]
]
我需要下面的散列
a=[{"name"=>"Raja","age"=>"29"},{"name"=>"Gop","age"=>"30"},{"name"=>"Gop","age"=>"30"},{"name"=>"pal","age"=>"21"}]
它所做的是,它将第一行作为键,并使用数组的其余部分作为值,如上所示
我已经编写了以下代码,它工作得很好
myArray = myArray.transpose unless columnHeaders
arrayHash = []
(1..myArray.length - 1).each do |i|
rowHash = OrderedHash.new
(0..myArray[i].length - 1).each do |j|
rowHash[myArray[0][j]] = myArray[i][j]
end
arrayHash << rowHash
end
return arrayHash
myArray=myArray.transpose除非列标题
arrayHash=[]
(1..myArray.length-1).每个都做| i|
rowHash=OrderedHash.new
(0..myArray[i]。长度-1。每个do | j|
rowHash[myArray[0][j]=myArray[i][j]
结束
arrayHash我会这样做:
a = [['name', 'age'], ['Raja', '29'], ['Gop', '30'], ['pal', '21']]
a[1..-1].map { |element| a[0].zip(element).to_h }
#=> [
# { "name" => "Raja", "age" => "29" },
# { "name" => "Gop", "age" => "30" },
# { "name" => "pal","age" => "21" }
# ]
我会这样做:
a = [['name', 'age'], ['Raja', '29'], ['Gop', '30'], ['pal', '21']]
a[1..-1].map { |element| a[0].zip(element).to_h }
#=> [
# { "name" => "Raja", "age" => "29" },
# { "name" => "Gop", "age" => "30" },
# { "name" => "pal","age" => "21" }
# ]
使用和:
使用和:
太棒了!太棒了!我怀疑这会更简单更容易。我认为greeny应该转到@spickermann,因为他的解决方案在数组中进行一次迭代。我只是展示了另一种方法,但我不确定它是否更好。事实上,我认为它使用现有的方法非常有效!特别是我喜欢用产品的方法!我怀疑这会更简单更容易。我认为greeny应该转到@spickermann,因为他的解决方案在数组中进行一次迭代。我只是展示了另一种方法,但我不确定它是否更好。事实上,我认为它使用现有的方法非常有效!特别是我喜欢用产品的方法!