【发布时间】:2023-04-10 23:45:01
【问题描述】:
在这里,我试图对priority_level 进行排序,以便首先出现字母表,然后是数字,此外,我还试图对priority_date 进行排序,使得最旧的在前与priority_date 一起排序,但它仍然必须显示字母第一
我期望的示例结果:
priority level: P Date: 1980-02-08T00:00:00.000Z
priority level: C Date: 2004-06-29T00:00:00.000Z
priority level: 1 Date: 2004-06-29T00:00:00.000Z
priority level: 1 Date: 2014-09-03T00:00:00.000Z
priority level: 5 Date: 2005-02-15T00:00:00.000Z
[这里喜欢同一级别的1,它应该像上面一样首先显示旧日期。]
下面是我得到的对象数组,并希望对此执行整个逻辑操作。
我正在使用 lodash orderby 但不确定它是否对此有帮助
const input = [{
priority_level: 'P ',
comments: '',
withdraw_granted_conditions: 'false',
condition: '',
_id: 5db00ad95399ab5cad9e6d44,
company: 5db00a135399ab5cad9e0049,
priority_date: 1980-02-08T00:00:00.000Z,
registration_type: 5db00a125399ab5cad9dfe4b,
sequence: 6835,
waiver_request: false,
waiver_granted: false,
waiver_letter_date: null,
letter_date: null,
waiver_sent: null,
no_extention_letter: false,
mpaa_extention_granted: false
},
{
priority_level: '1 ',
comments: '',
withdraw_granted_conditions: 'false',
condition: '',
_id: 5db00ad95399ab5cad9e6d43,
company: 5db00a145399ab5cad9e0096,
priority_date: 2004-06-29T00:00:00.000Z,
registration_type: 5db00a125399ab5cad9dfe4a,
sequence: 13505,
waiver_request: false,
waiver_granted: false,
waiver_letter_date: null,
letter_date: null,
waiver_sent: null,
no_extention_letter: false,
mpaa_extention_granted: false
},
{
priority_level: 'C ',
comments: '',
withdraw_granted_conditions: 'false',
condition: '',
_id: 5db00ad95399ab5cad9e6d42,
company: 5db00a135399ab5cad9dff5c,
priority_date: 2004-06-29T00:00:00.000Z,
registration_type: 5db00a125399ab5cad9dfe4a,
sequence: 13506,
waiver_request: false,
waiver_granted: false,
waiver_letter_date: null,
letter_date: null,
waiver_sent: null,
no_extention_letter: false,
mpaa_extention_granted: false
},
{
priority_level: '5 ',
comments: '',
withdraw_granted_conditions: 'false',
condition: '',
_id: 5db00ad95399ab5cad9e6d41,
company: 5db00a135399ab5cad9dff5a,
priority_date: 2005-02-15T00:00:00.000Z,
registration_type: 5db00a125399ab5cad9dfe4a,
sequence: 13508,
waiver_request: false,
waiver_granted: false,
waiver_letter_date: null,
letter_date: null,
waiver_sent: null,
no_extention_letter: false,
mpaa_extention_granted: false
},
{
priority_level: '1 ',
comments: '',
withdraw_granted_conditions: 'false',
condition: '',
_id: 5db00ad95399ab5cad9e6d41,
company: 5db00a135399ab5cad9dff5a,
priority_date: 2005-02-15T00:00:00.000Z,
registration_type: 5db00a125399ab5cad9dfe4a,
sequence: 13508,
waiver_request: false,
waiver_granted: false,
waiver_letter_date: null,
letter_date: null,
waiver_sent: null,
no_extention_letter: false,
mpaa_extention_granted: false
}]
const result = input.sort((a, b) => {
const aNumericPriorityLevel = Number.isInteger(Number.parseInt(a.priority_level));
const bNumericPriorityLevel = Number.isInteger(Number.parseInt(b.priority_level));
// If one items has letter priority level, and the other does not, sort
// a/b pair based on if a or b was the number
if (aNumericPriorityLevel !== bNumericPriorityLevel) {
return aNumericPriorityLevel ? 1 : -1;
}
// If a/b pair are both number or both letter, then sort in descending
// order based on date
return Date.parse(a.priority_date) - Date.parse(b.priority_date);
});
console.log(result)
上面的工作正常,但不要用相同的priority_level优化日期,它搞砸了那个senario。 就像想用字母和数字正常排序一样,但日期逻辑就像数据相同,那么它应该按日期降序排列。 在这里,如果我想要数字排序为 1,2,3,3,4,5 等,但如果任何数字有 2 个整数,如 1,2,2,3,3,3,1 那么它应该保留为日期具有多个条目的数字的降序日期条目。
【问题讨论】:
标签: javascript node.js reactjs lodash