Bewegen Sie das Objekt von einem array zu einem anderen
ich habe ein Objekt, das eine der Eigenschaften ist ein array von Objekten, die Idee ist, bewegen Sie Objekte aus diesem array keine neuen ein, wenn eine Bedingung wahr ist.
public $onInit(): void {
this.getTicket();
}
public ticket: any; //Object with the array
public comments: any = []; //New array to move the elements
public getTicket(): void {
this.ticketService
.getTicketComplete(this.$stateParams.ticketID)
.then((response: any) => {
this.ticket = response;
this.stringToDate(this.ticket);
this.ticket.messages.forEach((elem, index) => {
if (elem.type === "comment") {
this.ticket.messages.splice(index, 1);
this.comments.push(elem);
}
});
console.log(this.ticket);
});
}
das problem, das ich habe, ist die nächste:
das array hat, um Typen von Objekten, Nachrichten und Kommentare, wenn das array hat 2 Nachrichten und 3 Kommentare sollte es push-to-die new array 3 Kommentare und lassen Sie 2 Nachrichten, sondern bewegt sich nur 2 Kommentare.
Jede Idee. Vielen Dank für Ihre Hilfe.
- Vielleicht die Ursache ist, dass Sie ändern die
array
innerhalb derforEach
-Schleife? - Sollten Sie die
filter()
Methode zu filtern, welche Art von Element, das Sie entfernen möchten nach haben Sie die eingefügten Elemente in Ihrecomments
Objekt - ja die Idee ist Schleife die
array
auf der Suche für die Elemente, und entfernen Sie das element aus dem array und drücken Sie es auf ein neues....gibt es eine Möglichkeit, das zu tun, außerhalb derforEach
Schleife....?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist der Weg, Sie es tun:
JS:
Dies ist ein Beispiel, wie es getan werden kann:
JS:
Spezifische use-cases für Sie:
forEach
-Schleife mit (afor
-Schleife). Ihr problem war nicht, wenn Sie drücken Sie das element, sondern vielmehr, dass das array enthält jetzt 1 element weniger. Und Sie können nicht verringernindex
imforEach
-Schleife in einer Weise, die ich kenne.forEach
Dank für Eure Hilfe, und danke an den rest der Menschen wie Sie geben, Ideen zu.Entfernen Sie Elemente, wie Sie eine Schleife durch das array - dies ist nie eine gute Idee. Einen besseren Weg, um dieses Problem zu lösen ist, fügen Sie Sie dieser.Kommentare zuerst, und wenn die foreach abgeschlossen ist, starten, Durchlaufen diese.Kommentare und entfernen Sie diejenigen, die in dieses array aus den Nachrichten.
Hier gehen wir den asynchronen Weg, baby:
JS:
Einem anderen großen Bewegung, bedingte Weise, jubeln:
JS: