0

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

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

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

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

4

1 回答 1

2

您可以生成一个散列,以便使用 轻松查找客户端计数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]]
于 2021-02-04T04:12:28.090 回答