JavaScript使用自定义布尔值对日期排序



我有一个对象数组,这些对象包含日期其中一个包含

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; }

相关内容

  • 没有找到相关文章

最新更新