我有散列的大规模阵列,我需要通过:job_num
数值其通过:job_num
排序之后订购我需要:date
我将如何对一个哈希值数组进行排序,然后再对它进行排序?
array = [
{job_num: 1236, date: Date.parse('2016/10/19')},
{job_num: 1234, date: Date.parse('2016/10/17')},
{job_num: 1236, date: Date.parse('2016/10/20')},
{job_num: 1233, date: Date.parse('2016/10/18')}
]
# => [{:job_num=>1236, :date=>#<Date: 2016-10-19 ((2457681j,0s,0n),+0s,2299161j)>}, {:job_num=>1234, :date=>#<Date: 2016-10-17 ((2457679j,0s,0n),+0s,2299161j)>}, {:job_num=>1236, :date=>#<Date: 2016-10-20 ((2457682j,0s,0n),+0s,2299161j)>}, {:job_num=>1233, :date=>#<Date: 2016-10-18 ((2457680j,0s,0n),+0s,2299161j)>}]
我需要通过:job_num
array.sort! { |x,y| x[:job_num] <=> y[:job_num] }
# => [{:job_num=>1233, :date=>#<Date: 2016-10-18 ((2457680j,0s,0n),+0s,2299161j)>}, {:job_num=>1234, :date=>#<Date: 2016-10-17 ((2457679j,0s,0n),+0s,2299161j)>}, {:job_num=>1236, :date=>#<Date: 2016-10-20 ((2457682j,0s,0n),+0s,2299161j)>}, {:job_num=>1236, :date=>#<Date: 2016-10-19 ((2457681j,0s,0n),+0s,2299161j)>}]
然后我需要它的日期由工号排序后进行排序,就应该结束了,数组看起来像这样如果一切顺利:
array = [
{job_num: 1233, date: '2016/10/18'},
{job_num: 1234, date: '2016/10/17'},
{job_num: 1236, date: '2016/10/19'},
{job_num: 1236, date: '2016/10/20'}
]
(I离开的时间解析,因为其仅是示例的最后阵列和无关的逻辑中)
你可以发布一些你的尝试代码吗? – roelofs