按ISO日期对对象数组进行排序



我有这个对象数组:

let a =
[{
fecha: '2022-10-28',
txt: 'some text',
},{
fecha: '2022-10-26',
txt: 'some text',
},{
fecha: '2022-10-27',
txt: 'some text',
}]

如果我尝试这样做,它会原封不动地返回数组:

a.sort((c,d) => c.fecha > d.fecha)

尽管如此,这个测试还是抛出了一个布尔值:

a[0].fecha > a[1].fecha // true

我不明白。

排序函数(请参阅手册(应返回一个负数、正数或0,具体取决于第一个值是否小于、大于或等于第二个值。

排序操作到位,因此无需分配输出。

由于您的日期是ISO格式的,您可以使用localeCompare:将它们安全地排序为字符串

let a = [{
fecha: '2022-10-28',
txt: 'some text',
}, {
fecha: '2022-10-26',
txt: 'some text',
}, {
fecha: '2022-10-27',
txt: 'some text',
}]
a.sort((a, b) => a.fecha.localeCompare(b.fecha))
console.log(a)

希望这就是您所需要的,只需添加Date.parse(),它就会变成(timestamp)

let a = [
{
fecha: "2022-10-27",
txt: "some text"
},
{
fecha: "2022-10-28",
txt: "some text"
},
{
fecha: "2022-10-26",
txt: "some text"
}
];

a.sort((a, b) => Date.parse(b.fecha) - Date.parse(a.fecha));

console.log(a);

相关内容

  • 没有找到相关文章