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



我有一个数组的数组,包含客户总数、订单总数、订单总价值和位置的聚合数据。

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}
]

我需要将它们组合成一个新的数组数组(或将哈希数组的值附加到现有数组数组中),以便我可以将该数据输出到报告中,以向客户经理显示每个位置的市场渗透率。为此,我需要循环遍历数组并匹配它们的位置值,因为数组中的位置不一定总是按照相同的顺序。

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

我知道如何把市场渗透数据放入表格中,但我就是不知道如何将两者合并或附加。如果这样做有所不同/使工作更轻松,那么可以将prospective_clients列表作为另一个数组的数组,而不是一个哈希数组。

我只使用Ruby on Rails几个月,我所做的所有教科书和在线课程都只是处理简化的示例,要么使用数组,要么使用哈希;似乎没有任何地方涵盖了处理更复杂的数组的数组和哈希数组的实际应用,更不用说试图组合它们了……提前感谢你可以分享的任何建议/解决方案。

您可以生成一个散列,以便使用each_with_object轻松查找客户端计数。然后可以映射到current_clients数组并添加客户端计数。

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]]

最新更新