0

I want to create an object array that contains all the dates from each object sorted in order from the most recent date to the oldest date.
How can I loop through the dates for each object and sort them? Will medList[0].data.sort work?
I want to sort it like this:

var newArray = [{"dose": 10, "date": "2/15/2020"}, {"dose": 20, "date": "1/18/2020"}, {"dose": 20, "date": "12/21/2019"}]

const medList = [
  {
    "name": "Insulin",
    "dose unit": "mg",
    "freq": "daily",
    "route": "PO",
    "data": [
{
          "dose": 20,
          "date": "12/21/2019"
        },
        {
          "dose": 10,
          "date": "2/15/2020"
        }, {
          "dose": 20,
          "date": "1/18/2020"
        }
    ]
  },
  {
    // Another med...
  } ..
]

1 Answers1

1

You could do something like the following.

const medList = [{
    "name": "Insulin",
    "data": [{
        "dose": 20,
        "date": "12/21/2019"
      },
      {
        "dose": 10,
        "date": "2/15/2020"
      }, {
        "dose": 20,
        "date": "1/18/2020"
      }
    ]
  },
  {
    "name": "Viagra",
    "data": [{
        "dose": 20,
        "date": "9/9/2019"
      },
      {
        "dose": 10,
        "date": "12/15/2020"
      }, {
        "dose": 20,
        "date": "1/22/2020"
      }
    ]
  },
]

const sortedViagra = medList[1].data.sort((a, b) => new Date(b.date) - new Date(a.date));

const sortedMeds = medList.map(med => {
  return med.data.sort((a, b) => new Date(b.date) - new Date(a.date));
});

console.log('sortedMeds --->', sortedMeds)
console.log('sortedViagra -->', sortedViagra)
Paul Fitzgerald
  • 9,462
  • 3
  • 33
  • 49
  • If i want to adjust the dates for just one object, let's say viagra, should I use medList[1].map ? – user12324017 Jun 23 '20 at 20:53
  • it would be the following, no `map` required, just `sort` . Updated the answer too so it's easier to read - `const sortedViagra = medList[1].data.sort((a, b) => new Date(b.date) - new Date(a.date));` – Paul Fitzgerald Jun 23 '20 at 21:01