【发布时间】:2022-01-20 06:48:33
【问题描述】:
我正在尝试对多个字段进行排序,但我做不到
我的数组:
details = [
{
dateDebut: '2014-10-10',
rank:1
},
{
dateDebut: '2020-12-12',
rank:0
},
{
dateDebut: '2014-10-10',
rank:0
},
{
dateDebut: '2014-10-10',
rank:2
},
{
dateDebut: '2020-11-11',
rank:1
},
{
dateDebut: '2020-11-11',
rank:0
}
]
我想按日期递减和排名递减排序以获得以下结果:
details = [
{
dateDebut: '2020-12-12',
rank:0
},
{
dateDebut: '2020-11-11',
rank:1
},
{
dateDebut: '2020-11-11',
rank:0
},
{
dateDebut: '2014-10-10',
rank:2
},
{
dateDebut: '2014-10-10',
rank:1
},
,
{
dateDebut: '2014-10-10',
rank:0
},
]
在我的项目中,日期使用的是 Luxon。 我做了以下治疗,但没有得到正确的结果……:
component.ts:
details.sort((d1, d2) => this.myService.sortByRangAndDates(d1, d2, 'desc'));
service.ts:
sortByRangAndDates(d1: Details, d2: Details, order: 'asc' | 'desc'): number {
const orderValue = order === 'desc' ? -1 : 1;
const convert = (s: string): number => {
return s ? new Date(s).getUTCDate() : 0;
};
return (convert(d1?.dateDebut) < convert(d2?.dateDebut)) || (d1.rank < d2.rank ) ? orderValue :
(convert(d1?.dateDebut) > convert(d2?.dateDebut)) || (d1.rank > d2.rank ) ? -1 * orderValue : 0;
}
你能帮帮我吗? :)
谢谢
【问题讨论】:
-
添加了解决方案,如果不起作用,请告诉我:)
标签: typescript date sorting luxon