gpt4 book ai didi

ruby-on-rails - mongoid group_by 返回一个 HashMap 而不是哈希数组

转载 作者:IT老高 更新时间:2023-10-28 12:30:51 24 4
gpt4 key购买 nike

我想从 mongoid group_by 而不是数组中检索 HashMap

Product.group_by {|p| p.user_id }

返回一个映射数组

result = Product.group_by {|p| p.user_id } 

=> [ {"12354asdf" => [product1, product2, product3]},
{"safakjgh314" => [product4, product5, product6]} ]

我目前正在通过以下方式运行此查询的结果以实现映射的单个哈希

result.reduce Hash.new, :merge

=> {"12354asdf" => [product1, product2, product3], "safakjgh314" => [product4, product5, product6]}

有没有更有效的方法来做到这一点?

编辑***分组后,我宁愿使用有意义的枚举对集合进行操作。

result.each do |k v| k v end

而不是

result.each do |h| h.keys.first, h.values.first end

当前返回的示例。

[ 
{user_object => [item1, item2, item3] },
{user2_object => [item1, item2, item3] },
{user2_object => [item1, item2, item3] }
]

最佳答案

关于遍历散列数组的更紧凑的方法,您可以将每个元素的 first:

result.map(&:first).each do |k, v|
puts k
puts v.count
end
# 12354asdf
# 3
# safakjgh314
# 3

关于ruby-on-rails - mongoid group_by 返回一个 HashMap 而不是哈希数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21199958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com