[英]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.