【发布时间】:2013-07-28 13:54:43
【问题描述】:
我有一个如下所示的数组:
[
{"timestamp" => 1347119549, "category" => nil},
{"timestamp" => 1347119547, "category" => "Monkeys"},
{"timestamp" => 1347119543, "category" => nil},
{"timestamp" => 1347119542, "category" => "Monkeys"}
]
我想按时间戳(降序)对其进行排序,除非它的类别不是 nil,在这种情况下,它应该与它的“兄弟姐妹”一起出现,即使它比未分类的条目“旧”。我需要对这个数组进行排序,所以它看起来像这样:
[
{"timestamp" => 1347119549, "category" => nil},
{"timestamp" => 1347119547, "category" => "Monkeys"},
{"timestamp" => 1347119542, "category" => "Monkeys"},
{"timestamp" => 1347119543, "category" => nil}
]
我试图弄清楚如何使用group_by 和sort 获得正确的结果,但没有成功。
【问题讨论】:
-
应该由它的兄弟姐妹出现 但是顺序在哪里?假设您有 3 个类别为“猴子”的条目,它们出现在排序列表的哪个位置?通过第一个“猴子”条目?第二?第三?以上都不是?
-
好问题,抱歉我没有澄清。它们应该出现在第一个条目中,有效地插入它们,将以下条目“向下”推:)
-
@Borodin 的解决方案是最简单且性能最好的。它大约是所选答案的两倍:gist.github.com/dresselm/6099437