将两个数组转换为Hash对数组

时间:2015-08-03 07:56:04

标签: arrays ruby hash

我有两个数组:

dates = [1,2,3]
values = [10,20,30]

我该如何将它们合并?

[{date:1,value:10},{date:2,value:20}...etc]

3 个答案:

答案 0 :(得分:7)



    public function show($groupA, $groupB, $groupC)
    {
        $query = FodMap::query();
        if ($groupA !== 'none') {
          $query->where('groupA', '=', $groupA)
        }

        if ($groupB !== 'none') {
          $query->where('groupB', '=', $groupB)
        }

        if ($groupC !== 'none') {
          $query->where('groupC', '=', $groupC)
        }

        return $query->get();
    }

答案 1 :(得分:0)

另一种方法是:

dates.each_with_index.map{|d,i| {:date=>d,:value=>values[i]}}
# => [{:date=>1, :value=>10}, {:date=>2, :value=>20}, {:date=>3, :value=>30}]

答案 2 :(得分:0)

<强>解决方案

dates = [1,2,3]
values = [10,20,30]

h = ([:date].product(dates)).zip([:value].product(values)).collect(&:to_h)
p h

<强>输出

[{:date=>1, :value=>10}, {:date=>2, :value=>20}, {:date=>3, :value=>30}]

PS: 上面的输出看起来不同,但它与你期望的一样 - Ruby Hash。请参阅下面的证明

p [{date:1,value:10},{date:2,value:20}] # This is what you want

产生

[{:date=>1, :value=>10}, {:date=>2, :value=>20}]