angularjs - 更新克隆列表时如何阻止原始列表更新
问题描述
我想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
不断更新。
解决方案
您应该克隆一个数组,然后修改您的新数组,一种方法是使用扩展操作...
这是它的例子:
var initialarray = [1,2,3,4];
var modification = [...initialarray];
modification.push(5);
console.log(initialarray);
console.log(modification);
推荐阅读
- eclipse - Eclipse 表达式视图中的 gdb 命令
- tensorflow - 从 Tensorflow 2.0 中加载的 saved_model 访问中间层
- maven - 超时限制后未调用 Spring Boot Hystrix 回退方法
- python - 在 AWS EMR 上的 zip 文件中提交 pyspark 支持 sql 文件
- python - Python 机器学习脚本中的内存错误
- excel - 向 SmartArt 节点添加超链接
- python - 迭代文件并将值添加到 python 字典
- javascript - JSON 对象数组。按名称对对象值进行分组
- macos - 如何修复 Catalina 上的 Apache 错误:403 Forbidden / Client denied by server configuration
- typescript - 如何将 ES 用户模块(用于渲染器进程)导入 Electron 主进程