Javascript按最近日期到最早日期对对象数组进行排序?

时间:2020-06-23 20:39:18

标签: javascript arrays sorting object

我想创建一个对象数组,其中包含每个对象的所有日期,这些日期按从最新日期到最早日期的顺序排序。
如何遍历每个对象的日期并对它们进行排序? medList[0].data.sort可以工作吗?
我想这样排序:

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 个答案:

答案 0 :(得分:1)

您可以执行以下操作。

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)