繁体   English   中英

在javascript中对格式DD.MM.YYYY的日期进行排序

[英]Sorting the Date of Format DD.MM.YYYY in javascript

我有一组带有日期和列表的数据。 我需要对字段进行排序。 我可以对除日期以外的所有其他字段进行排序。 在代码下面找到。 而且,如果我对“名称”列进行排序,其他两列的图标也会发生变化。 我想要的解决方案就像我对特定列进行排序一样,该特定列箭头图标不应更改其他两列图标。

所以我的问题是如何对日期列进行排序,并且该特定列的图标应该仅在我点击该特定列时更改。

HTML

    <ion-row class="header-row">
      <ion-col size="1" tappable (click)="sortBy('Name')">
       <b>FirstName</b>
      <ion-icon name="arrow-down" *ngIf="sortDirection==1"></ion-icon>
      <ion-icon name="arrow-up" *ngIf="sortDirection==2"></ion-icon>
      </ion-col>

      <ion-col size="1" tappable (click)="SortBy('PurchaseDate')">
      <b>Purchase Date</b>
      <ion-icon name="arrow-down" *ngIf="sortDirection==1"></ion-icon>
      <ion-icon name="arrow-up" *ngIf="sortDirection==2"></ion-icon>
      </ion-col>

      <ion-col size="1" tappable (click)="sortBy('CarName')">
      <b>Car Name</b>
      <ion-icon name="arrow-down" *ngIf="sortDirection==1"></ion-icon>
      <ion-icon name="arrow-up" *ngIf="sortDirection==2"></ion-icon>
      </ion-col>
    </ion-row>

     <ion-card class="cardbottomfield colpadding">
     <div *ngFor="let purchase of purchasedetails ; trackBy: trackByFn" class="data-row">
     <ion-row> 
       <ion-col size="1"> 
         {{purchase.Name}}
       </ion-col>
       <ion-col size="1" > 
        {{purchase.PurchaseDate}}
       </ion-col>
       <ion-col size="1">
        {{purchase.CarName}}
       </ion-col>      
       </ion-row>
       </div>
     </ion-card>

打字稿

     sortBy(key) {
      this.sortKey= key;
      this.sortDirection++;
      this.sort();
      }

      sort() {
        if(this.sortDirection == 1) {
          this.purchasedetails = this.purchasedetails.sort((a,b) => {
          const valA = a[this.sortKey];
          const valB = b[this.sortKey];
          return valA.localeCompare(valB);
         });

        } else if (this.sortDirection == 2) {
        this.purchasedetails = this.purchasedetails.sort((a,b) => {
        const valA = a[this.sortKey];
        const valB = b[this.sortKey];
        return valB.localeCompare(valA);
        });

       } else {
      this.sortDirection = 0;
      this.sortKey = null;
      }
     }

按格式日期对对象数组进行排序 ( DD.MM.YYYY )

datesObject.sort(function(a, b){
    let curr = a.date.split('.').reverse().join();
    let prev = b.date.split('.').reverse().join();
    return curr < prev ? -1 : (curr > prev ? 1 : 0);
});
  1. 从日期字符串创建Date对象
  2. 根据valueOf升序排序

 const parseDate = (dateStr) => { const [d, m, y] = dateStr.split('.') .map(Number) return new Date(y, m - 1 /* month is 0-indexed */, d) } const sortDatesAsc = (dateStr1, dateStr2) => { return parseDate(dateStr2).valueOf - parseDate(dateStr1).valueOf } console.log([ '10.01.2010', '01.10.2010', '10.10.2020', ].sort(sortDatesAsc))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM