繁体   English   中英

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

[英]Trimming a date in an object from an array and sorting the array by most recent date

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

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

如何更改map函数,以便不隔离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"
    },

]

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

 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> 

提供您自己的比较器:

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

  notes.sort((a, b) => byDate(b).localeCompare(byDate(a)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM