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
更新基礎條目 –