2017-06-21 87 views
5

Pętlę przez tablicę obiektów, które mają właściwość date. Warunek, który ustawiłem wewnątrz pętli, aby porównać datę obiektu z dzisiejszą datą, powinien zająć się tylko kilkoma obiektami w tablicy, które chcę zachować z powodu starej daty, jednak to warunkowe usuwa wszystkie obiekty w tablicy dla jakiś powód.jak zachować obiekty ze starą datą poza moją tablicą

Nie działa z użyciem metody getTime(). getTime usuwa wszystko z tablicy. Jak próbowałem tutaj:

constructor ( public navCtrl: NavController, 
           public modalCtrl: ModalController, 
           public loading: LoadingController, 
           public popoverCtrl: PopoverController, 
           public getPostSrvc: getPostsService) { 

     this.listOfEvents = []; 

     let that = this; 

function getPostsSuccess (listOfEventsObject) { 

        for (var i in listOfEventsObject) { 

         if(listOfEventsObject[i].date.getTime() < Date.now()){ 

           that.listOfEvents.push(listOfEventsObject[i]); 

           }//close if 
        }//close for loop 
    }//close function 
}//close constructor 

UPDATE Moje rozwiązanie:

export class Home { 

    listOfEvents: Array<any> = []; 
    parseDate: number; 
    today : number; 

    constructor ( //constructor stuff){ 

     for (var i in listOfEventsObject) { 

      that.today = Date.now(); 


       that.parseDate = Date.parse(listOfEventsObject[i].date); 

       if(that.parseDate > that.today){ 

         that.listOfEvents.push(listOfEventsObject[i]); 

        }//close if 


       }//close for 
}//close constructor 
}//close export 
+0

Jaka jest wartość 'listOfEventsObject [i] .date'? – RobG

+0

Data @RobG ma datę wyboru z selektora daty na formularzu .. – Spilot

+2

W takim przypadku prawdopodobnie porównujesz ciąg znaków taki jak "2017-06-21" z numerem podobnym do 1498078203780. – RobG

Odpowiedz

1

Jeśli, jak wspomniano przez RobG w komentarzu, wartość listOfEventsObject[i].date jest ciągiem znaków, można analizować je pierwszy, i porównać wartość wynikową Data do Date.now():

if (Date.parse(listOfEventsObject[i].date) < Date.now()) { 
    ... 
} 
0

nie mogę powiedzieć na pewno, ponieważ nie wiem, jaki rodzaj danych listOfEventsObject[i].date ma. Ale jeśli dane zawierają znaczniki czasu, możesz przekonwertować je na milisekundy i porównać z Date.now().

if (listOfEventsObject[i].date.getTime() < Date.now())

dać mi znać, jeśli nie jest to odpowiedź szukasz, okrzyki.

+1

Operator '<' używa algorytmu [* abstract relational comparison *] (http://ecma-international.org/ecma-262/7.0/index.html#sec-abstract-relational-comparison), który wymusza daty na liczbie , więc nie ma praktycznej różnicy między 'date RobG