更新克隆列表时如何阻止原始列表更新

时间:2018-09-12 01:57:18

标签: angularjs foreach

我想在更新self.lineDetails时停止更新self.modifiedLineDetails

self.modifiedLineDetails = [];
angular.forEach(self.lineDetails, function (value1, index1) {
    var lineDetail = self.lineDetails[index1];
    self.modifiedLineDetails.push(lineDetail)
});
console.log(self.lineDetails)
angular.forEach(self.modifiedLineDetails, function (value10, index10) {
    var modifiedLineDetail = self.modifiedLineDetails[index10];
    if (modifiedLineDetail.SelectedCustomers.length > 0) {
        modifiedLineDetail.SelectedCustomers = 1;
    } else {
        modifiedLineDetail.SelectedCustomers = 0
    }
});
console.log(self.modifiedLineDetails)

以前,我只是像这样self.modifiedLineDetails = self.lineDetails分配了它,然后更新了self.modifiedLineDetails,但是它没有用,所以我尝试按行推送它,但是self.lineDetails不断更新。

2 个答案:

答案 0 :(得分:0)

您应该克隆一个数组,然后修改新数组,一种方法是使用 传播操作...

这里是例子:

var initialarray = [1,2,3,4];
var modification = [...initialarray];
modification.push(5);
console.log(initialarray);
console.log(modification);

答案 1 :(得分:0)

由于该问题似乎是由于我在使用angular而引起的。我研究发现angular.copy会创建一个deep copy。下面的代码对我有用。

self.modifiedLineDetails = angular.copy(self.lineDetails);