2017-09-22 80 views
0

我有一個json數據如下。我正在使用angular2打字稿來根據日期範圍篩選此json。我正在使用Moment格式化日期字符串。我需要針對類的所有屬性過濾searchvalue。我與其他物業管理。我不知道如何過濾日期範圍。任何人都可以幫助如何做到這一點?typescript如何按日期範圍過濾json

過濾標準: 導入*爲'瞬間'的時刻;

export class FilterCriteria { 
    public from: string; 
    public to: string; 
    public searchValue: string; 
    constructor() { 
     this.from = moment(new Date()).format('DD/MM/YYYY').toString(); 
     this.to = moment(new Date()).format('DD/MM/YYYY').toString(); 
    } 
} 

搜索方法:

return this.searchItems 
      .map((item) => 
       items.filter(item => item.id === criteria.searchValue 
          || item.time === criteria.searchValue 
          || item.alertType.toLocaleLowerCase().indexOf(criteria.searchValue.toLocaleLowerCase()) > -1 
          || item.source === criteria.searchValue 
          || item.relevantComms.toLocaleLowerCase().indexOf(criteria.searchValue.toLocaleLowerCase()) > -1 
          || item.to.toLocaleLowerCase().indexOf(criteria.searchValue.toLocaleLowerCase()) > -1 
          || item.from.toLocaleLowerCase().indexOf(criteria.searchValue.toLocaleLowerCase()) > -1)); 

和JSON數據:

[ 
    { 
     "from": "Sender", 
     "to": "Receiver", 
     "source": "Email", 
     "id": "861068CM", 
     "date": "24/07/17" 
    }, 
    { 
     "from": "Sender", 
     "to": "Receiver", 
     "source": "Email", 
     "id": "861068CM", 
     "date": "12/07/17" 
    }, 
    { 
     "from": "Sender", 
     "to": "Receiver", 
     "source": "Email", 
     "id": "861068CM", 
     "date": "09/07/17" 
    }, 
    { 
     "from": "Sender", 
     "to": "Receiver", 
     "source": "Email", 
     "id": "861068CM", 
     "date": "02/02/17" 
    }, 
] 
+0

是什麼類型,並從性質的項目?他們是日期還是時刻對象? – hagner

+0

from和to是字符串屬性。該過濾器必須應用於json中的date屬性 –

回答

0

我會用瞬間query methods isBefore和isAfter方法比較的日期。 在FilterCriteria類從和屬性的類型更改爲時刻類型:

export class FilterCriteria { 
    public from: Moment; 
    public to: Moment; 
    public searchValue: string; 
    constructor() { 
     this.from = moment(new Date()); 
     this.to = moment(new Date()); 
    } 
} 

在過濾器中,然後使用它們:

criteria.from.isBefore(item.date) && criteria.to.isAfter(item.date)