2
入れ子になっています2 _.forEach;_.forEachループ値すべての継承されたデータを変更する
_.forEach(this.operationTypes, (value: any, key) => {
value.Terms = [];
this.operationLimits.push(value);
_.forEach(this.operationTerms, (subValue: OperationTerm, subKey) => {
let typeTerms = _.filter(this.operationTypeTerms, { OperationType: { Id: value.Id }, OperationTerm: { Id: subValue.Id } });
subValue.TypeTerms = typeTerms[0];
this.operationLimits[key].Terms.push(subValue);
});
});
ただし、最後のループの値と同じ値をすべてTypeTerms
作成します。 これは、新しい値が私のforeachループsubValue
から継承されたことを意味します。subValue
が変更された場合、これから自動的に変更されるすべての値が自動的に変更されます。
これを防止する方法は?
おかげ
編集:
それはこのようになるはず。
[
{
Active: true,
Id: 2,
Name: "Cash Out",
Terms: [
{
Id: 2,
Name: "Daily Limit",
TypeTerms: "Forbidden" -> all of these are same 'forbidden', but it could be 'forbidden' or 'allowed'. At the end of the loop all data changed to forbidden, because the last datas TypeTerms value is 'forbidden'
},
{
Id: 3,
Name: "Weekly Limit",
TypeTerms: "Forbidden"
}
]
},
{
Active: true,
Id: 3,
Name: "Top Up",
Terms: [
{
Id: 2,
Name: "Daily Limit",
TypeTerms: "Forbidden"
},
{
Id: 3,
Name: "Weekly Limit"
TypeTerms: "Forbidden"
}
]
}
]
二つのネストされたループに影響を与えるべきではない、単純なここにアンダースコアなしの角度が、 を使用していたことに注意してくださいとフィルタは、候補のように思えますリファクタリング入力データと目的の出力の小さなサンプルを提供できますか? – jmargolisvt
ベースエントリ –