从数组中修剪对象中的日期,并按最近日期对数组进行排序



我有一个对象数组,我需要修剪created_at值并返回按最新created_at值降序排列的完整对象数组。

我可以根据需要执行排序,但我的代码只返回create_at值,而不是按该排序顺序返回整个对象

如何更改映射函数,使其不隔离created_at值?

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()

正确的结果是:

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"
    },
]

提供您自己的比较器:

  const byDate = note => note.created_at.substring(0,10);
  notes.sort((a, b) => byDate(b).localeCompare(byDate(a)));

似乎您所需要的只是一种排序,您可以通过比较排序函数中的属性值来完成

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>

最新更新