-1

我有一个这样的数组:

[
  {
    'date' => '2013-09-01',
    'impressions' => 50,
    'clicks' => 20,
  },
  {
    'date' => '2013-09-02',
    'impressions' => 51,
    'clicks' => 22,
  },
]

我想从每个数组中取出一个元素并使其成为哈希的索引,如下所示:

{
  '2013-09-01' => {
    'impressions' => 50,
    'clicks' => 20,
  },
  '2013-09-02' => {
    'impressions' => 51,
    'clicks' => 22,
  },
}

我意识到我可以通过蛮力做到这一点,但我想有一些神奇的方法可以帮助我。看起来 splat 可能是一个解决方案,但我找不到任何完全符合我要求的示例。

4

2 回答 2

0
Hash[ a.map{ |h| [ h.delete('date') , h] } ]
于 2013-10-01T17:15:29.653 回答
-1

试试下面的:

a = [
  {
    'date' => '2013-09-01',
    'impressions' => 50,
    'clicks' => 20,
  },
  {
    'date' => '2013-09-02',
    'impressions' => 51,
    'clicks' => 22,
  },
]

Hash[a.map{|h| [h['date'],Hash[h.to_a[1..-1]]] }]

或者

Hash[a.map{|h| [h['date'],h.select{|k,_| k != 'date'}] }]

# => {"2013-09-01"=>{"impressions"=>50, "clicks"=>20},
 #"2013-09-02"=>{"impressions"=>51, "clicks"=>22}}
于 2013-10-01T15:43:15.813 回答