如何将此数组转换为哈希

Raj*_*lan 0 ruby

我有一个像这样的数组

['project','AAA','Division','BBB','TestingType','CCC','Email','abc@gmail.com','def'@gmail.com','efg@gmail.com',...]
Run Code Online (Sandbox Code Playgroud)

电子邮件数量各不相同。并且可能还会有一些内容输入,例如,'project','AAA','Time','2323','Division','BBB','TestingType','CCC'现在您可能已经注意到,输入了Time和2323,所以结果哈希值也必须包含'Time'=>'2323'。但是无论如何,电子邮件将在最后。

我想将此数组转换为这样的哈希

resultHash = {
  'project' => 'AAA',
  'Division' => 'BBB',
  'TestingType' => 'CCC',
  'Email' => ['abc@gmail.com', 'def@gmail.com', 'efg@gmail.com']
}
Run Code Online (Sandbox Code Playgroud)

对我而言,这里的困难在于,电子邮件计数每次都不同。有人可以如上所述将这个数组转换为所需的哈希吗?

Ily*_*lya 5

似乎您正在寻找类似的东西:

attributes, emails = *array.slice_before('Email')
Hash[*attributes].update(emails.first => emails[1..-1])
#=> {"project"=>"AAA", "Division"=>"BBB", "TestingType"=>"CCC", 
#    "Email"=>["abc@gmail.com", "def@gmail.com", "efg@gmail.com"]}
Run Code Online (Sandbox Code Playgroud)