Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 按唯一键对2个数组中的数据进行分组_Ruby On Rails_Ruby_Arrays_Hash - Fatal编程技术网

Ruby on rails 按唯一键对2个数组中的数据进行分组

Ruby on rails 按唯一键对2个数组中的数据进行分组,ruby-on-rails,ruby,arrays,hash,Ruby On Rails,Ruby,Arrays,Hash,刚接触rails,有点挣扎!!帮助 因此,我有两个数组,一个用于员工工作详细信息,另一个用于员工个人详细信息,都包含一个唯一的对应keyemployee代码,将信息绑定在一起 如何根据员工代码将这两个数组存储到散列中,以便将工作详细信息和个人详细信息绑定到唯一密钥上 我尝试过各种排序方法,但似乎没有什么办法 基本上,最后我希望能够打印出所有员工的列表,同时显示他们的所有详细信息 员工:姓名:约翰·基:001等 详细信息:职务:经理钥匙001等 员工:姓名:Sally Key:002等 详细信息:

刚接触rails,有点挣扎!!帮助

因此,我有两个数组,一个用于员工工作详细信息,另一个用于员工个人详细信息,都包含一个唯一的对应keyemployee代码,将信息绑定在一起

如何根据员工代码将这两个数组存储到散列中,以便将工作详细信息和个人详细信息绑定到唯一密钥上

我尝试过各种排序方法,但似乎没有什么办法

基本上,最后我希望能够打印出所有员工的列表,同时显示他们的所有详细信息

员工:姓名:约翰·基:001等 详细信息:职务:经理钥匙001等

员工:姓名:Sally Key:002等 详细信息:标题:管理员密钥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">
  }
}

这两个对象是数组还是散列?如何识别数组中的唯一键?听起来更像是散列。请你能为我们提供一些数据结构的例子吗?