【发布时间】:2014-01-21 15:21:11
【问题描述】:
我有一个这样的哈希数组,我已经删除了一些记录以用于演示目的。
[
{
"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],
}
如何将这两个哈希合并为一个,以便将整个对话集中在一个地方,就像线程对话一样?
【问题讨论】:
-
你不能只对 group_by 进行排序吗?
[r['recipient_id'], r['sender_id']].sort。然后你就得到每个组和sort_by“created_at”值 -
啊,是的,我可以。抱歉,我还在学习 :) 谢谢!
-
没问题,我将其添加为答案,因为它正是您要查找的内容。
标签: ruby-on-rails ruby arrays hash