persons = ['person1', 'person2', 'person3']
projects = ['project1', 'project2', 'project3']
issues = [1000, 10001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010]
issuetimes = [1, 2 ,3, 4, 5, 6, 7, 8, 9]
persons.each_with_object({}).with_index do |(person, hsh), index|
hsh[person] = {
projects[index] => {
issues.slice!(0, 3) => issuetimes.slice!(0, 3)
}
}
end
Это даст вам. {"person1"=>{"project1"=>{[1000, 10001, 1002]=>[1, 2, 3]}}, "person2"=>{"project2"=>{[1003, 1004, 1005]=>[4, 5, 6]}}, "person3"=>{"project3"=>{[1006, 1007, 1008]=>[7, 8, 9]}}}
Несколько замечаний по этому вопросу.
{1000, 1001, 1002 => {1,2,3}}
не является допустимым хешем, так как выдает ошибку. Тем не менее, вы можете сделать следующее [1, 2, 3]=>[4, 5, 6]}
, поэтому мой ответ выше предполагает, что это именно то, что вы хотите сделать. - Мое решение использует деструктивную форму
slice!
, поэтому обратите внимание, что issues
и issuetimes
массивы будут изменены из этого решения. Если вы не хотите, чтобы я делал дубликаты этих массивов, используя метод dup
.
В некоторой связанной заметке вы можете проверить zip , когдаречь идет о создании хэшей из массивов. Hash[persons.zip(projects)] // {"person1"=>"project1", "person2"=>"project2", "person3"=>"project3"}
, это не то, что вы хотите здесь, но я подумал, что упомяну это.