ArunKolhapur
ArunKolhapur

Reputation: 6925

Sorting an array of objects based on object property

I have an array like so:

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

I need to sort this array based on committed_date. How do I do that?

Do I have to loop and write a custom sorting function or does Ruby offers something out-of-box?

Upvotes: 1

Views: 84

Answers (1)

Umar Khan
Umar Khan

Reputation: 1430

Using sort_by

array.sort_by {|obj| obj.attribute}

Or more concise

array.sort_by(&:attribute)

In your case

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

Upvotes: 2

Related Questions