TypeScript sort by date not working

后端 未结 4 1849
后悔当初
后悔当初 2020-12-18 17:43

I have an object TaskItemVO with field dueDate which has the type Date:

export class TaskItemVO {
    
    public dueDa         


        
相关标签:
4条回答
  • 2020-12-18 18:04

    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);
        });
      }
    
    0 讨论(0)
  • 2020-12-18 18:11

    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. */

    0 讨论(0)
  • 2020-12-18 18:13

    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);
        });
    }
    
    0 讨论(0)
  • 2020-12-18 18:17

    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);
        });
    }
    
    0 讨论(0)
提交回复
热议问题