js怎么先按ctime desc,再按title asc
示例:
let data = [
{title: "B", ctime: "2023-04-01"},
{title: "C", ctime: "2023-04-02"},
{title: "A", ctime: "2023-04-01"},
// ...其他对象
];
// 第一次排序:按ctime降序
data.sort((a, b) => new Date(b.ctime).getTime() - new Date(a.ctime));
// 第二次排序:在ctime相同的情况下,按title升序
data.sort((a, b) => {
if (new Date(a.ctime).getTime() === new Date(b.ctime).getTime()) {
return a.title.localeCompare(b.title);
}
return 0; // 如果ctime不同,则维持之前排序结果
});
console.log(data);
这段代码首先使用 Date
对象将 ctime
字符串转换为时间戳进行比较,实现按 ctime
的降序排列。随后,在这个基础上,利用 localeCompare()
方法对那些 ctime
相同的对象按 title
进行升序排列。注意,由于第一次排序已经确定了主要排序依据(ctime 降序),第二次排序只需在 ctime 相同时进行,所以在第二次排序的比较函数中,当 ctime 不相同时返回 0
以维持之前的排序结果。