使用.sort_by对嵌套数组进行排序

时间:2016-11-15 00:14:31

标签: ruby

我有一个嵌套数组,我希望按特定对象排序,非常感谢一些建议。

在这个例子中,我希望返回的输出按嵌套的日期排序。

arr =    [
           [
             {  
               "log"=>[
                 [
                   "2016-09-03T00:00:00-03:00",
                 ],
                 [
                   "2016-09-01T00:00:00-03:00",
                 ],
                 [
                   "2016-09-02T00:00:00-03:00",
                 ]
               ]
             }
           ]
         ]

1 个答案:

答案 0 :(得分:3)

arr = [
        [
          {  
            "log"=>[
               ["2016-09-03T00:00:00-03:00"],
               ["2016-09-01T00:00:00-03:00"],
               ["2016-09-02T00:00:00-03:00"]
            ]
          }
        ]
      ]

返回已排序的数组而不是变异arr

[[{ "log"=>arr[0][0]["log"].sort_by(&:first) }]]
  #=> [[{"log"=>[
  #       ["2016-09-01T00:00:00-03:00"],
  #       ["2016-09-02T00:00:00-03:00"],
  #       ["2016-09-03T00:00:00-03:00"]
  #   ]}]] 

要进行排序:

arr[0][0]["log"] = arr[0][0]["log"].sort_by(&:first)
  #=> [["2016-09-01T00:00:00-03:00"],
  #    ["2016-09-02T00:00:00-03:00"],
  #    ["2016-09-03T00:00:00-03:00"]] 
arr
  #=> [[{"log"=>[
  #       ["2016-09-01T00:00:00-03:00"],
  #       ["2016-09-02T00:00:00-03:00"],
  #       ["2016-09-03T00:00:00-03:00"]
  #   ]}]]