Ruby on rails 按唯一键对2个数组中的数据进行分组
刚接触rails,有点挣扎!!帮助 因此,我有两个数组,一个用于员工工作详细信息,另一个用于员工个人详细信息,都包含一个唯一的对应keyemployee代码,将信息绑定在一起 如何根据员工代码将这两个数组存储到散列中,以便将工作详细信息和个人详细信息绑定到唯一密钥上 我尝试过各种排序方法,但似乎没有什么办法 基本上,最后我希望能够打印出所有员工的列表,同时显示他们的所有详细信息 员工:姓名:约翰·基:001等 详细信息:职务:经理钥匙001等 员工:姓名:Sally Key:002等 详细信息:标题:管理员密钥002等Ruby on rails 按唯一键对2个数组中的数据进行分组,ruby-on-rails,ruby,arrays,hash,Ruby On Rails,Ruby,Arrays,Hash,刚接触rails,有点挣扎!!帮助 因此,我有两个数组,一个用于员工工作详细信息,另一个用于员工个人详细信息,都包含一个唯一的对应keyemployee代码,将信息绑定在一起 如何根据员工代码将这两个数组存储到散列中,以便将工作详细信息和个人详细信息绑定到唯一密钥上 我尝试过各种排序方法,但似乎没有什么办法 基本上,最后我希望能够打印出所有员工的列表,同时显示他们的所有详细信息 员工:姓名:约翰·基:001等 详细信息:职务:经理钥匙001等 员工:姓名:Sally Key:002等 详细信息:
以此类推。假设employees是一个employees对象数组,而details是一个Detail对象数组
employees.map do |employee|
{
:employee => employee, :details => details.select { |detail| detail.key == employee.key }
}
end
顺便问一下,员工和细节之间没有关联是有原因的吗?您将此标记为Rails
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">
}
}
这两个对象是数组还是散列?如何识别数组中的唯一键?听起来更像是散列。请你能为我们提供一些数据结构的例子吗?