Mr.Easy Answers McFly Mr.Easy Answers McFly - 1 month ago 15
TypeScript Question

TypeScript sort by date not working

I have an object

TaskItemVO
with field
dueDate
which has the type
Date
:

export class TaskItemVO {

public dueDate: Date;
}


I have this method which I call when I try to sort by date but it is not working:

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

});
}


I get this error in the return line of method:


The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.

The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.


So what is the correct way of sorting array by date fields in TypeScript?

Answer

Try using the Date.getTime() method:

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

    });
}

^ Above throws error with undefined date so try below:


Edit

If you want to handle undefined:

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