TypeScript sort by date not working
If you are running into issues with the accepted answer above. I got it to work by creating a new Date and passing in the date parameter.
private getTime(date?: Date) {
return date != null ? new Date(date).getTime() : 0;
}
public sortByStartDate(array: myobj[]): myobj[] {
return array.sort((a: myobj, b: myobj) => {
return this.getTime(a.startDate) - this.getTime(b.startDate);
});
}
As possible workaround you can use unary +
operator here:
public sortByDueDate(): void {
this.myArray.sort((a: TaskItemVO, b: TaskItemVO) => {
return +new Date(a.dueDate) - +new Date(b.dueDate);
});
}
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);
});
}
I believe it's better to use valueOf
public sortByDueDate(): void {
this.myArray.sort((a: TaskItemVO, b: TaskItemVO) => {
return a.dueDate.valueOf() - b.dueDate.valueOf();
});
}
according to docs: /** Returns the stored time value in milliseconds since midnight, January 1, 1970 UTC. */