[英]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.