425343308605714432, "text"=>"Hello", "sender"=-6ren">
gpt4 book ai didi

ruby-on-rails - 使用 Ruby 按两个条件对哈希数组进行分组

转载 作者:数据小太阳 更新时间:2023-10-29 08:48:08 24 4
gpt4 key购买 nike

我有一个像这样的哈希数组,出于展示目的,我删除了一些记录。

[
{
"id"=>425343308605714432,
"text"=>"Hello",
"sender"=> {
"id"=>1375480994,
"name"=>"Rocket"
},
"sender_id"=>1375480994,
"recipient"=> {
"id"=>24766510,
"name"=>"Max Rose-Collins"
},
"recipient_id"=>24766510,
"recipient_id_str"=>"24766510",
"recipient_screen_name"=>"maxrosecollins",
"created_at"=>"Mon Jan 20 19:05:21 +0000 2014"
},
{
"id"=>413305410666639361,
"text"=>"How are you",
"sender"=> {
"id"=>24766510,
"name"=>"Max Rose-Collins"
},
"sender_id"=>24766510,
"sender_screen_name"=>"maxrosecollins",
"recipient"=> {
"id"=>1375480994,
"name"=>"Rocket"
},
"recipient_id"=>1375480994,
"recipient_id_str"=>"1375480994",
"recipient_screen_name"=>"Rocket",
"created_at"=>"Wed Dec 18 13:51:03 +0000 2013"
}
]

这个哈希数组还包含其他用户之间的其他消息。我想将其安排到包含两个用户之间发送和接收的消息的对话中。我试过使用

.group_by { |r| [r['recipient_id'], r['sender_id']] }

但这并没有按照我的想法对它们进行分组。它使两组一组被发送,另一组被接收。

{
[1375480994, 24766510]=>[removed for presentation],
[24766510, 1375480994]=>[removed for presentation],
[24766510, 146385359]=>[removed for presentation],
[146385359, 24766510]=>[removed for presentation],
}

如何将这两个哈希值合并为一个,以便将整个对话集中在一个地方,就像线程对话一样?

最佳答案

为了按 session 对它们进行分组,您可以将 sort 方法添加到 group_by 函数中:

.group_by{ |r| r.values_at('recipient_id', 'sender_id').sort }

关于ruby-on-rails - 使用 Ruby 按两个条件对哈希数组进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21262163/

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