微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ruby on Rails:将散列数组中的值与数组数组组合或追加?

如何解决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,"Glasgow",1076],"Edinburgh",2433],"Inverness",524]
]

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

我只使用 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]]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。