我们应该如何在不影响父列表的情况下更新另一个列表变量中的列表

问题描述 投票:1回答:1

我有以下数据列表。

subscriberDataList<br>
        -> wipEligibilityList<br>
        -> dependentList<br><br>

dependentList<br>
        -> wipEligibilityList<br>
        -> eligibilityList<br><br>

wipEligibilityList[0]<br>
        -> status<br>
        -> amountPending<br><br>

eligibilityList[0]<br>
        -> status<br>
        -> amountPending<br><br>

问题是我应该如何从dependentList.eligibilityList.status更新dependentList.wipEligibilityList.status?但不更新subscriberDataList.wipEligibilityList.status and amountPending. <br><br>如果我像下面那样做,它也会影响到subscriberDataList.wipEligibilityList.statussubscriberDataList.wipEligibilityList.amountPending<br><br>

this.subscriberDataList.dependentList.forEach(dependent => {<br><br>
    dependent.wipEligibilityList.forEach(wipEiligible => {<br><br>
        dependent.eligibilityList.forEach(eligibile => {<br><br>
            if(wipEiligible.status) {<br><br>
                if(eligibile.status && eligibile.status === 'ACTIVE' && eligibile.amountPending === 'NO' ) {<br><br>
                    wipEiligible.status = eligibile.status;<br><br>
                    wipEiligible.amountPending = eligibile.amountPending;<br><br>
                }<br><br>
            }<br><br>
        });<br><br>
    });<br><br>
});<br><br>
angular angular6 angular8
1个回答
0
投票

在那种情况下,问题似乎出在您最初构建依赖列表的方式上。如果是相同的数据,则应以不相同的引用的方式创建它(直到列表内对象的级别):

subscriberDataList.dependentList = 
  JSON.parse(JSON.stringify(subscriberDataList.wipEligibilityList));

之后,您可以遵循自己的逻辑,它将成为独立的数据。 JSON.parse(JSON.stringify(...))将创建您列表的深层副本,这样可以避免对一个列表的对象进行任何更改以反映在另一个列表中。

如果从属列表是原始列表的过滤副本,则可以在遍历对象之前重建它:

subscriberDataList.dependentList = 
  JSON.parse(JSON.stringify(subscriberDataList.dependentList));
© www.soinside.com 2019 - 2024. All rights reserved.