我有一个对象数组,这些对象包含日期其中一个包含
noDate: true
价值。我想对这些日期进行排序,目前我可以这样排序:
data.sort((a, b) => a.date - b.date)
但是我需要对它们进行排序,以便具有noDate真值的对象成为数组中的第一个对象。我试过这个,但它不能正常工作:
data.sort((a, b) => a.noDate === true ? -1 : a.date - b.date)
您可以先将布尔值/undefined
值转换为负布尔值,然后再取delta。然后按date
排序
const
data = [
{ id: 0, noDate: true },
{ id: 1, date: new Date('2021-10-30') },
{ id: 2, date: new Date('2020-10-30') },
{ id: 3, noDate: true },
];
data.sort((a, b) => !a.noDate - !b.noDate || a.date - b.date);
console.log(data);
data.sort((a, b) => !b.noDate - !a.noDate || a.date - b.date);
console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }