我有一个对象 TaskItemVO,其字段为 dueDate,其类型为 Date:

export class TaskItemVO {

    public dueDate: Date;
}
我有这个方法,当我尝试按日期排序时调用它,但它不起作用:
public sortByDueDate(): void {
    this.myArray.sort((a: TaskItemVO, b: TaskItemVO) => {
        return a.dueDate - b.dueDate;

    });
}
我在方法的返回行中收到此错误:

那么在 TypeScript 中按日期字段对数组进行排序的正确方法是什么?

最佳答案

尝试使用 Date.getTime() 方法:

public sortByDueDate(): void {
    this.myArray.sort((a: TaskItemVO, b: TaskItemVO) => {
        return a.dueDate.getTime() - b.dueDate.getTime();

    });
}

^ 以上会抛出未定义日期的错误,因此请尝试以下操作:

编辑

如果要处理未定义:
private getTime(date?: Date) {
    return date != null ? date.getTime() : 0;
}


public sortByDueDate(): void {
    this.myArray.sort((a: TaskItemVO, b: TaskItemVO) => {
        return this.getTime(a.dueDate) - this.getTime(b.dueDate);
    });
}

关于sorting - TypeScript 按日期排序不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40248643/

10-13 04:21