0

I have an array of objects and I need to trim the created_at value and return the full array of objects descending by most recent created_at value.

I can perform the sort as desired but my code only returns the create_at value, not the entire object in that sorted order

How do I alter the map function so that I don't isolate the created_at value?

var notes = [
    {
        country: "Angola",
        denomination: 50,
        currency: "Kwanzas",
        issue_date: 2012,
        created_at: "2017-07-20T18:41:15.000Z",
        updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
        country: "Rwanda",
        denomination: 5000,
        currency: "Francs",
        issue_date: 2009,
        created_at: "2008-07-20T18:41:15.000Z",
        updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
        country: "Serbia",
        denomination: 50,
        currency: "Dinara",
        issue_date: 2011,
        created_at: "2015-07-20T18:41:15.000Z",
        updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
        country: "Moldova",
        denomination: 20,
        currency: "Lei",
        issue_date: 2013,
        created_at: "2009-07-20T18:41:15.000Z",
        updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
        country: "Liberia",
        denomination: 10,
        currency: "Dollars",
        issue_date: 2010,
        created_at: "1998-07-20T18:41:15.000Z",
        updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
        country: "Kazakhstan",
        denomination: 500,
        currency: "Tenge",
        issue_date: 2019,
        created_at: "2001-07-20T18:41:15.000Z",
        updated_at: "2019-07-20T18:41:15.000Z"
    }
]

var dateMap = notes.map(note => note.created_at.substring(0,10)).sort().reverse()

The correct result would be:

dateMap = [
    {
        country: "Angola",
        denomination: 50,
        currency: "Kwanzas",
        issue_date: 2012,
        created_at: "2017-07-20T18:41:15.000Z",
        updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
        country: "Serbia",
        denomination: 50,
        currency: "Dinara",
        issue_date: 2011,
        created_at: "2015-07-20T18:41:15.000Z",
        updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
        country: "Moldova",
        denomination: 20,
        currency: "Lei",
        issue_date: 2013,
        created_at: "2009-07-20T18:41:15.000Z",
        updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
        country: "Rwanda",
        denomination: 5000,
        currency: "Francs",
        issue_date: 2009,
        created_at: "2008-07-20T18:41:15.000Z",
        updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
        country: "Kazakhstan",
        denomination: 500,
        currency: "Tenge",
        issue_date: 2019,
        created_at: "2001-07-20T18:41:15.000Z",
        updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
        country: "Liberia",
        denomination: 10,
        currency: "Dollars",
        issue_date: 2010,
        created_at: "1998-07-20T18:41:15.000Z",
        updated_at: "2019-07-20T18:41:15.000Z"
    },

]

2 Answers 2

0

Provide your own comparator:

  const byDate = note => note.created_at.substring(0,10);

  notes.sort((a, b) => byDate(b).localeCompare(byDate(a)));
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you very much. That does what I need.
0

Seems all you are needing is a sort which you can do by comparing the property values in sort function

notes.sort((a, b) => b.created_at.localeCompare(a.created_at))

console.log(notes)
<script>
  var notes = [{
      country: "Angola",
      denomination: 50,
      currency: "Kwanzas",
      issue_date: 2012,
      created_at: "2017-07-20T18:41:15.000Z",
      updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
      country: "Rwanda",
      denomination: 5000,
      currency: "Francs",
      issue_date: 2009,
      created_at: "2008-07-20T18:41:15.000Z",
      updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
      country: "Serbia",
      denomination: 50,
      currency: "Dinara",
      issue_date: 2011,
      created_at: "2015-07-20T18:41:15.000Z",
      updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
      country: "Moldova",
      denomination: 20,
      currency: "Lei",
      issue_date: 2013,
      created_at: "2009-07-20T18:41:15.000Z",
      updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
      country: "Liberia",
      denomination: 10,
      currency: "Dollars",
      issue_date: 2010,
      created_at: "1998-07-20T18:41:15.000Z",
      updated_at: "2019-07-20T18:41:15.000Z"
    },
    {
      country: "Kazakhstan",
      denomination: 500,
      currency: "Tenge",
      issue_date: 2019,
      created_at: "2001-07-20T18:41:15.000Z",
      updated_at: "2019-07-20T18:41:15.000Z"
    }
  ]
</script>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.