按键值对 Ruby 哈希列表进行排序



我有以下代码:

[{"day":3,"count":4.75},{"day":1,"count":5.5},{"day":2,"count":3.0},{"day":4,"count":5.0},{"day":5,"count":7.2},{"day":6,"count":7.666666666666667},{"day":0,"count":6.75}]

我想按"天"键值对这个哈希列表进行排序。

最终输出应如下所示:

[{"day":0,"count":6.75},{"day":1,"count":5.5},{"day":2,"count":3.0},{"day":3,"count":4.75},{"day":4,"count":5.0},{"day":5,"count":7.2},{"day":6,"count":7.666666666666667}]

我该怎么做?

使用 Enumerable#sort_by 执行以下操作:

hsh.sort_by{|h| h['day'] }

您可以将块传递给数组上的 #sort。

array.sort do |a, b|
    a[:day] <=> b[:day]
end  

这将迭代您的哈希并使用您的:day密钥进行比较。

附言我会在您的数组中使用更好的符号语法。

a = [{"day":3,"count":4.75},{"day":1,"count":5.5},{"day":2,"count":3.0},{"day":4,"count":5.0},{"day":5,"count":7.2},{"day":6,"count":7.666666666666667},{"day":0,"count":6.75}]
a.sort{|x,y| x["day"] <=> y["day"] }

但你的原件应该是{"天" =>3, "计数" =>4.75}

最新更新