首页 > 解决方案 > 根据对象属性对对象数组进行排序

问题描述

我有一个像这样的数组:

[
  {
    "name": "aabb",
    "commit": {
      "id": "1",
      "message": "aabb ",
      "committed_date": "2018-04-04T15:11:04.000+05:30",
      "committer_name": "ak",
      "committer_email": "ak@ak.in"
    },
    "protected": false
  },
  {
    "name": "aacc",
    "commit": {
      "id": "2",
      "message": "aacc ",
      "committed_date": "2018-02-04T15:11:04.000+05:30",
      "committer_name": "ak",
      "committer_email": "ak@ak.in"
    },
    "protected": false
  },
  {
    "name": "aadd",
    "commit": {
      "id": "3",
      "message": "aadd ",
      "committed_date": "2018-04-01T15:11:04.000+05:30",
      "committer_name": "ak",
      "committer_email": "ak@ak.in"
    },
    "protected": false
  }
]

我需要根据committed_date. 我怎么做?

我必须循环并编写自定义排序函数还是 Ruby 提供了一些开箱即用的东西?

标签: ruby

解决方案


使用 sort_by

array.sort_by {|obj| obj.attribute}

或者更简洁

array.sort_by(&:attribute)

在你的情况下

array.sort_by {|obj| obj[:commit][:committed_date]}

推荐阅读