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,因为他的解决方案在数组中进行一次迭代。我只是展示了另一种方法,但我不确定它是否更好。事实上,我认为它使用现有的方法非常有效!特别是我喜欢用产品的方法!