新的铁杆和挣扎了一下!!帮助
所以我有2个数组(一个用于员工工作细节,另一个用于员工个人详细信息),两个数组都包含将信息绑定在一起的唯一对应密钥(员工代码)。
如何通过员工代码将这些数组存储到哈希中,因此需要将工作详细信息和个人详细信息绑定在唯一键上。
我尝试了各种排序方法,但似乎没有什么可以做的。
最后,我希望能够打印出所有员工的清单,并将所有详细信息显示在一起。
员工:姓名:John Key:001等 DETAILS:Title:Manager Key 001等
员工:姓名:Sally Key:002等 详情:标题:Admin Key 002等
依此类推......
答案 0 :(得分:0)
假设“employees”是一个Employee对象数组,“details”是一个Detail对象数组...
employees.map do |employee|
{
:employee => employee, :details => details.select { |detail| detail.key == employee.key }
}
end
BTW您是否有某些原因导致员工与详细信息无关? (你把它标记为Rails ......)
答案 1 :(得分:0)
Employee = Struct.new(:id, :name)
Detail = Struct.new(:id, :title)
employees = [ Employee.new(1, "John"), Employee.new(2, "Sally") ]
details = [ Detail.new(2, "Admin"), Detail.new(1, "Manager") ]
Hash[
employees.map do |employee|
detail = details.find { |d| d.id == employee.id }
[ employee.id, { :employee => employee, :detail => detail } ]
end
]
或者如果您知道两个数组中都存在所有ID:
Hash[
employees.sort_by { |e| e.id }.zip(details.sort_by { |d| d.id }).map do |e,d|
[ e.id, { :employee => e, :detail => d } ]
end
]
给出:
{
1 => {
:employee => #<struct Employee id=1, name="John">,
:details => #<struct Detail id=1, title="Manager">
},
2 => {
:employee => #<struct Employee id=2, name="Sally">,
:details => #<struct Detail id=2, title="Admin">
}
}