gpt4 book ai didi

ruby - 将哈希数组分组为数组的哈希数组?

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:53 25 4
gpt4 key购买 nike

我正在尝试用 ruby​​ 进行数据操作。

给定这个哈希数组

peepz = [
{
:name => 'ted',
:phone => '555-1234',
:color => 'red'
},
{
:name => 'bill',
:phone => '555-2222',
:color => 'green'
},
{
:name => 'ted',
:phone => '555-3333',
:color => 'orange'
},
{
:name => 'dan',
:phone => '555-7777',
:color => 'violet'
},
{
:name => 'ted',
:phone => '555-4444',
:color => 'yellow'
},
{
:name => 'dan',
:phone => '555-6666',
:color => 'orange'
}
];

我想要这个输出

peepz2 = [
{
:name => 'ted'
:phone => ['555-1212','555-3333','555-4444']
:color => ['red','orange','yellow']
},
{
:name => 'bill'
:phone => ['555-2222']
:color => ['green']
},
{
:name => 'dan'
:phone => ['555-7777','555-6666']
:color => ['violet','orange']
},
]

这是我目前所拥有的。

def groupbyer ( peepz, *fields )
peepz.groupby do |peep|
key = ''
fields.each do |field|
key += peep[field].to_s
end
end.each do |group|
????
end
end

groupbyer(peepz, :name)

必须推广此方法。它不能对 peepz 的字段进行硬编码

完成这个的好的 ruby​​ 方法是什么?

最佳答案

peepz
.group_by{|h| h[:name]}.values
.map{|a| a.inject{|h1, h2| h1.merge(h2){|k, v1, v2| k == :name ? v1 : [*v1, v2]}}}

关于ruby - 将哈希数组分组为数组的哈希数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205803/

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