2017-09-22 3 views
0

ich habe eine json daten wie folgt. Ich verwende angular2 typescript, um diesen json basierend auf dem Datumsbereich zu filtern. Ich verwende Moment, um die Datumszeichenfolge zu formatieren. Ich muss den Suchwert für alle Eigenschaften der Klasse filtern. Ich habe es mit anderen Eigenschaften geschafft. Ich kann den Datumsbereich nicht filtern. Kann mir jemand helfen, wie das geht?typescript wie json nach datum zu filtern

Filterkriterien: Import * als Moment von Moment;

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(); 
    } 
} 

Suchmethode:

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)); 

Und json Daten:

[ 
    { 
     "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

Welche Art ist das Element zu und von Eigenschaften? Sind sie Daten oder Momentobjekte? – hagner

+0

von und nach sind String-Eigenschaften. Der Filter muss auf die Eigenschaft date im json angewendet werden –

Antwort

0

würde ich Momente query methods isBefore und isAfter Methoden verwenden, um die Daten zu vergleichen. Ändern Sie den Typ des von und zu Eigenschaften in der FilterCriteria Klasse Moment Typ:

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

verwenden sie dann im Filter:

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