繁体   English   中英

Ruby on Rails:将哈希数组中的值与 arrays 数组组合(或 append?)

[英]Ruby on Rails: combine (or append?) values from array of hashes with an array of arrays

我有一个 arrays 数组,其中包含有关客户总数、订单总数、订单总值和位置的汇总数据。

current_clients => [
[293, 2846, 28365.00, "Glasgow"],
[958, 8174, 85551.50, "Edinburgh"],
[177, 982, 10783.75, "Inverness"]
]

我有一个单独的哈希数组,其中包含共享相同位置列表的数据(来自另一个来源),以及我们目标市场中该位置的客户数量的计数。

prospective_clients => [
{location: "Edinburgh", count: 2433},
{location: "Glasgow", count: 1076},
{location: "Inverness", count: 524}
]

我需要将它们组合成一个新的 arrays 数组(或 append 散列数组的值到现有的数组数组中),以便我可以将 output 的数据放入报告给客户经理的报告中。 为此,我需要遍历 arrays 并在位置值上匹配它们,因为位置不一定总是在 arrays 中以相同的顺序排列。

market_penetration => [
[293, 2846, 28365.00, "Glasgow", 1076],
[958, 8174, 85551.50, "Edinburgh", 2433],
[177, 982, 10783.75, "Inverness", 524]
]

我知道如何将市场渗透率数据放入表格中,但我就是不知道如何将两者结合起来。 如果它有所作为/让生活更轻松,则可以将预期客户列表作为另一个 arrays 数组,而不是哈希数组。

我只在 Rails 上使用 Ruby 几个月,而我完成的所有教科书和在线课程都只是处理使用 arrays 或使用哈希的简化示例; 似乎无处涵盖处理更复杂的 arrays 的 arrays 和 arrays 的哈希值的实际应用,没关系尝试将它们结合起来......提前感谢您提供任何建议/解决方案。

您可以生成 hash 以使用each_with_object轻松查找客户端计数。 然后,您可以在current_clients数组上 map 并添加客户端计数。

prospective_clients_hash = prospective_clients.each_with_object({}) do |client, acc|
  acc[client[:location]] = client[:count]
end

#=> {"Edinburgh"=>2433, "Glasgow"=>1076, "Inverness"=>524}

market_penetration = current_clients.map do |client|
  location = client[3]
  [*client, prospective_clients_hash[location]] # * is the splat operator
end

#=> [[293, 2846, 28365.0, "Glasgow", 1076], [958, 8174, 85551.5, "Edinburgh", 2433], [177, 982, 10783.75, "Inverness", 524]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM