按键的值排序Ruby哈希值列表

时间:2014-01-17 21:22:05

标签: 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}]

我该怎么做?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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"] }

但你的原件应该是 {“day”=&gt; 3,“count”=&gt; 4.75}

答案 2 :(得分:0)

您可以将块传递给阵列上的#sort。

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

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

P.S。我会在你的数组中使用更好的符号语法。