我有这个对象数组:
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);