我们应该如何更新另一个列表变量中的列表而不影响 angular 中的父列表
How should we update list inside another list variable without effect parent list in angular
我有以下数据列表。
subscriberDataList
-> wipEligibilityList
-> dependentList
dependentList
-> wipEligibilityList
-> eligibilityList
wipEligibilityList[0]
-> status
-> amountPending
eligibilityList[0]
-> status
-> amountPending
问题是 我应该如何从 dependentList.eligibilityList.status 更新 dependentList.wipEligibilityList.status
?但不更新 subscriberDataList.wipEligibilityList.status and amountPending.
如果我像下面那样做,它也会影响 subscriberDataList.wipEligibilityList.status
和 subscriberDataList.wipEligibilityList.amountPending
。
this.subscriberDataList.dependentList.forEach(dependent => {
dependent.wipEligibilityList.forEach(wipEiligible => {
dependent.eligibilityList.forEach(eligibile => {
if(wipEiligible.status) {
if(eligibile.status && eligibile.status === 'ACTIVE' && eligibile.amountPending === 'NO' ) {
wipEiligible.status = eligibile.status;
wipEiligible.amountPending = eligibile.amountPending;
}
}
});
});
});
在那种情况下,问题似乎出在您最初构建依赖列表的方式上。如果它是相同的数据,您应该以不同于相同引用的方式创建它(向下到列表中对象的级别):
subscriberDataList.dependentList =
JSON.parse(JSON.stringify(subscriberDataList.wipEligibilityList));
之后按照你的逻辑,就是独立的数据了。 JSON.parse(JSON.stringify(...))
将创建列表的深层副本,这可以避免对一个列表的对象所做的任何更改反映在另一个列表中。
如果依赖列表是原始列表的过滤副本,您可以在遍历对象之前重建它:
subscriberDataList.dependentList =
JSON.parse(JSON.stringify(subscriberDataList.dependentList));
您还可以使用库,例如 fast-copy 以高效的方式构建原始数据的深度克隆:
import copy from 'fast-copy';
...
subscriberDataList.dependentList = copy(subscriberDataList.dependentList);
我有以下数据列表。
subscriberDataList
-> wipEligibilityList
-> dependentList
dependentList
-> wipEligibilityList
-> eligibilityList
wipEligibilityList[0]
-> status
-> amountPending
eligibilityList[0]
-> status
-> amountPending
问题是 我应该如何从 dependentList.eligibilityList.status 更新 dependentList.wipEligibilityList.status
?但不更新 subscriberDataList.wipEligibilityList.status and amountPending.
如果我像下面那样做,它也会影响 subscriberDataList.wipEligibilityList.status
和 subscriberDataList.wipEligibilityList.amountPending
。
this.subscriberDataList.dependentList.forEach(dependent => {
dependent.wipEligibilityList.forEach(wipEiligible => {
dependent.eligibilityList.forEach(eligibile => {
if(wipEiligible.status) {
if(eligibile.status && eligibile.status === 'ACTIVE' && eligibile.amountPending === 'NO' ) {
wipEiligible.status = eligibile.status;
wipEiligible.amountPending = eligibile.amountPending;
}
}
});
});
});
在那种情况下,问题似乎出在您最初构建依赖列表的方式上。如果它是相同的数据,您应该以不同于相同引用的方式创建它(向下到列表中对象的级别):
subscriberDataList.dependentList =
JSON.parse(JSON.stringify(subscriberDataList.wipEligibilityList));
之后按照你的逻辑,就是独立的数据了。 JSON.parse(JSON.stringify(...))
将创建列表的深层副本,这可以避免对一个列表的对象所做的任何更改反映在另一个列表中。
如果依赖列表是原始列表的过滤副本,您可以在遍历对象之前重建它:
subscriberDataList.dependentList =
JSON.parse(JSON.stringify(subscriberDataList.dependentList));
您还可以使用库,例如 fast-copy 以高效的方式构建原始数据的深度克隆:
import copy from 'fast-copy';
...
subscriberDataList.dependentList = copy(subscriberDataList.dependentList);