簡體   English   中英

按日期對JSON對象數組進行排序-Angular2

[英]Sorting an Array of JSON objects by date - Angular2

我正在嘗試對Angular2中的對象數組進行排序。 最好的解釋方法是給出代碼示例:

 var activity = { SEQ_NO: -1, SIGNUP_NAME: "Testing Activity", SHORT_DESCRIPTION: "This activity min: 2, max: 25", EVENT_BEGIN_DATE: "2018/09/25", EVENT_END_DATE: "2018/09/25" }; 

數組中填充了如上所示的對象。 我的目標是獲取數組並根據日期對其進行排序。 我還調用了轉換日期函數,該函數接受數字日期並將其轉換為可讀格式:

 convertDate(incomingDate) { var myDate = new Date(incomingDate); var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; console.log(days[myDate.getDay()]); var date = days[myDate.getDay()]+" "+(myDate.getMonth()+1)+'/'+myDate.getDate()+'/'+myDate.getFullYear(); //alert(date); return date; } 

因此,此示例中顯示的活動對象將轉換為: Tuesday 9/25/2018

如何按日期對這些對象的數組排序? 當我顯示它們時,我想按月顯示它們。

謝謝大家。

首先,我會將您的日期轉換為Unix時間,因為這些日期已經按月份進行了排序。

其次,我只是按該數字對數組進行排序

由於您正在使用打字稿。

component.html

 <div *ngFor="let sorted of sortedArray$ | async">
    {{sorted.start}} 
 </div>

component.ts

  list: any[] = [{
    start: '2018/09/25',
    content: 'second'
  },{
    start: '2018/08/10',
    content: 'first'
  }];

  sortedArray$: Observable<any[]>;

  constructor(public navCtrl: NavController) {
    this.sortedArray$ = Observable.of(this.list)
    .map((data) => {
        data.sort((a, b) => {
            return new Date(a.start.getTime()) > new Date(b.start.getTime());
        });
        return data;
    });
  }

當字符串日期的格式為yyyy / mm / dd時,可以正確排序而不進行轉換。

list.sort(function (a, b) {
  a = a.EVENT_BEGIN_DATE;
  b = b.EVENT_BEGIN_DATE;
  if (a < b) {
    return -1;
  } else if (a > b) {
    return 1;
  }
  return 0;
});

然后,您可以轉換日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM