Ein Datensatz hat eine alte Farbe/Nummer und neue Eigenschaften, die geändert werden können. Ich möchte ein Array durchlaufen und überprüfen, ob die alten und neuen Werte nicht übereinstimmen. Wenn dies nicht der Fall ist, möchte ich feststellen, welche Eigenschaft geändert wurde (Farbe/Anzahl), die geänderte Eigenschaft dieses Datensatzes festlegen und sie in ein Array verschieben. Wenn der Datensatz sowohl für Farbe als auch für Nummer geändert wird, möchte ich eine Kopie jedes Arrayeintrags mit der geänderten Eigenschaft.Array-Überschreiben
Ich habe ein paar verschiedene Möglichkeiten ausprobiert und der Push überschreibt die geänderte Eigenschaft, egal was ich mache. Ich habe versucht, ein lokales Array zu verwenden, und das hat auch nicht geklappt. Hier ist ein Beispiel.
export class Record {
id: string;
oldcolor: string;
newcolor: string;
oldnumber: string;
newnumber: string;
changed: string;
}
@Input() newrecords: Record[];
output: Record[] = [];
functionTest() {
for (let rec of this.newrecords) {
if (rec.newcolor != rec.oldcolor) {
rec.changed = "color";
output.push(rec);
}
if (rec.newnumber != rec.oldnumber) {
rec.changed = "number";
output.push(rec);
}
}
}
desired result
[{
id: 1;
oldcolor: red;
newcolor: red;
oldnumber: 6;
newnumber: 6;
changed: color;
},
{
id: 1;
oldcolor: red;
newcolor: red;
oldnumber: 6;
newnumber: 6;
changed: number;
}]
Dank Mark, das hat funktioniert. Was sind einige der effizienteren Möglichkeiten, die Sie erwähnt haben? – meli02
Nun, ich spekuliere wirklich, denke ich ... es hängt davon ab, was Sie mit dem Array tun, sobald Sie es erstellt haben. Wenn Sie beispielsweise den Datenspeicher für ein UI-Grid bereitstellen, der die Daten auf eine bestimmte Weise anzeigen muss, gibt es möglicherweise keine andere Möglichkeit. OTOH, wenn Sie dies für die Verarbeitung in eine Funktion übergeben, die Sie steuern, und könnte daher die Struktur beliebig definieren, zum Beispiel mit einem Wert für 'changed = 'both''; oder wenn der Wert von 'changed' ein Array ist (' changed: ["color", "number"] ') könnte die Verarbeitung (zum Kopieren von Objekten) und der Speicher (zum Speichern der Kopien) gespeichert werden. –