レコードには古い色/番号と新しいプロパティがあり、これは変更できます。私は配列をループし、古い値と新しい値が一致しないかどうかを確認したい。もしそうでなければ、どのプロパティが変更されたのか(カラー/数値)を決定し、そのレコードの変更されたプロパティを設定し、それを配列にプッシュしたいと思います。レコードに色と数値の両方が変更されている場合は、変更されたプロパティが異なる各配列エントリのコピーが必要です。アレイプッシュ上書き
私はいくつかの方法を試しましたが、プッシュは私が何をしても変更されたプロパティを上書きしています。私はローカル配列を使用しようとしましたが、どちらもうまくいきませんでした。ここに例があります。
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;
}]
ありがとうございました。あなたが言及したより効率的な方法のいくつかは何ですか? – meli02
まあ、私が推測しているのは、あなたがそれを作った後は、あなたが配列を使って何をしているかによって変わります。データを特定の方法で表示する必要があるUIグリッドのデータストアに、たとえば別の方法がない場合、あなたが制御する関数にこれを渡して、あなたが好きなように構造体を定義できたら、例えば 'changed = 'both''の値を持つことができます。 'changed:[" color "、" number "]')は、処理(オブジェクトのコピー)とメモリ(コピーの保存)を節約することができます。 –