Arrays 将数组与数组的数组合并

Arrays 将数组与数组的数组合并,arrays,ruby,Arrays,Ruby,给定阵列1: [:lien_amount, :contact_number] 鉴于Array2: [[14646.75, nil], [69454.63, nil], [24989.53, nil], [74455.69, nil], [140448.19, nil], [12309.34, nil]] 我想: { lien_amount: [14646.75, 69454.63, 24989.53, 74455.69,140448.19, 12309.34], contact_

给定阵列1:

 [:lien_amount, :contact_number] 
鉴于Array2:

[[14646.75, nil], [69454.63, nil], [24989.53, nil], [74455.69, nil], [140448.19, nil], [12309.34, nil]]
我想:

{
  lien_amount: [14646.75, 69454.63, 24989.53, 74455.69,140448.19, 12309.34],
  contact_number: [nil, nil, nil, nil, nil, nil]
} 
因此,我想将一个数组的键与数组数组中的值进行匹配

我正在寻找一个一行代码的解决方案。我所尝试的:

array2.flat_map {|a| a.zip(array1)}
这将返回以下内容:

[[14646.75, :lien_amount], [nil, :contact_number], [69454.63, :lien_amount], [nil, :contact_number], ...
不是我想要的。但给出了我想要的解决方案类型的想法

arr1 = [:lien_amount, :contact_number] 
arr2 = [[14646.75, nil], [69454.63, nil], [24989.53, nil], [74455.69, nil],
        [140448.19, nil], [12309.34, nil]]

[arr1, arr2.transpose].transpose.to_h
  #=> {:lien_amount=>[14646.75, 69454.63, 24989.53, 74455.69, 140448.19, 12309.34],
  #    :contact_number=>[nil, nil, nil, nil, nil, nil]}
步骤如下

a = arr2.transpose
  #=> [[14646.75, 69454.63, 24989.53, 74455.69, 140448.19, 12309.34],
  #    [nil, nil, nil, nil, nil, nil]]
b = [arr1, a]
  #=> [[:lien_amount, :contact_number],
  #    [[14646.75, 69454.63, 24989.53, 74455.69, 140448.19, 12309.34],
  #     [nil, nil, nil, nil, nil, nil]]]
c = b.transpose
  #=> [[:lien_amount, [14646.75, 69454.63, 24989.53, 74455.69, 140448.19, 12309.34]],
  #    [:contact_number, [nil, nil, nil, nil, nil, nil]]]
c.to_h
  #=> {:lien_amount=>[14646.75, 69454.63, 24989.53, 74455.69, 140448.19, 12309.34],
  #    :contact_number=>[nil, nil, nil, nil, nil, nil]}
步骤如下

a = arr2.transpose
  #=> [[14646.75, 69454.63, 24989.53, 74455.69, 140448.19, 12309.34],
  #    [nil, nil, nil, nil, nil, nil]]
b = [arr1, a]
  #=> [[:lien_amount, :contact_number],
  #    [[14646.75, 69454.63, 24989.53, 74455.69, 140448.19, 12309.34],
  #     [nil, nil, nil, nil, nil, nil]]]
c = b.transpose
  #=> [[:lien_amount, [14646.75, 69454.63, 24989.53, 74455.69, 140448.19, 12309.34]],
  #    [:contact_number, [nil, nil, nil, nil, nil, nil]]]
c.to_h
  #=> {:lien_amount=>[14646.75, 69454.63, 24989.53, 74455.69, 140448.19, 12309.34],
  #    :contact_number=>[nil, nil, nil, nil, nil, nil]}
请尝试执行以下操作:

[[14646.75, :lien_amount], [nil, :contact_number], [69454.63, :lien_amount], [nil, :contact_number], ...
array1.zip(array2.transpose).to_h


请尝试执行以下操作:

[[14646.75, :lien_amount], [nil, :contact_number], [69454.63, :lien_amount], [nil, :contact_number], ...
array1.zip(array2.transpose).to_h



使用转置的好方法!使用转置的好方法!进一步阅读:进一步阅读:解决方法是使用转置,我喜欢它。进一步阅读:解决方法是使用转置,我喜欢它。进一步阅读: