【发布时间】:2020-01-22 17:28:03
【问题描述】:
我是 ruby 新手,没有找到任何关于如何做到这一点的答案或逻辑。我正在尝试将一个数组分成两半,其中一半以降序排序,另一半以升序排序。
长话短说,假设我们有以下哈希数组:
[
{:rating=>1, :num=>1},
{:rating=>1, :num=>1},
{:rating=>3.5, :num=>37},
{:rating=>4.0, :num=>23},
{:rating=>4.0, :num=>72},
{:rating=>4.0, :num=>38},
{:rating=>3.5, :num=>72},
{:rating=>4.0, :num=>74}
]
我不太擅长解释事情,但我会尽力更好地解释预期的结果。
首先,我需要获取具有最小:rating 键值和:num 键值的散列并将其推送到新数组中。剩余的散列应该在:rating 和:num 之后按升序排序,然后每个散列,从具有最小:rating 值的散列开始,应该按照以下规则推入新创建的数组中:one in数组的开头和结尾,直到没有哈希值。
所以最终的结果应该是这样的:
[
{:rating=>4.0, :num=>74},
{:rating=>4.0, :num=>72},
{:rating=>3.5, :num=>72},
{:rating=>1, :num=>1},
{:rating=>1, :num=>1},
{:rating=>3.5, :num=>37},
{:rating=>4.0, :num=>23},
{:rating=>4.0, :num=>38}
]
非常感谢任何帮助。谢谢。
【问题讨论】:
-
上半场是什么意思?
-
您选择的答案返回的排序与您想要的“最终结果”有很大不同。你这样做的理由是什么?
-
我对你的问题投了反对票,因为它不清楚。具体来说,在对两部分进行排序之前对数组进行分区的标准是什么?如果您通过编辑澄清来解决@iGian 的评论(我不相信您已经看到),我将删除我的反对票。