javascript - 面临修改对象属性的问题
问题描述
由于一些混乱,我无法在 for 循环中执行时基于另一个对象操作现有对象。我在我的项目中使用 Angular,这里是代码:
对象A
object_a = {
"status1": {
"volume": 100,
"processed": 23,
"progress": 77
},
"status2": {
"volume": 100,
"processed": 23,
"progress": 77
},
"status3": {
"volume": 100,
"processed": 23,
"progress": 77
},
"status4": {
"volume": 50,
"processed": 2,
"progress": 3
}
}
对象 B
object_b = {
"status1": {
"volume": 300,
"processed": 200,
"progress": 100
},
}
这就是我使用它的方式:
let count = 0;
for(const keyLevel1 in this.object_a){
let valueLevel1 = this.object_a[keyLevel1];
let valueObj = {};
isIncorrect[keyLevel1] = false;
for(const keyLevel2 in valueLevel1){
let valueLevel2 = this.object_a[keyLevel1][keyLevel2];
if(Math.sign(valueLevel2) == -1 || valueLevel2 == "NA"){
isIncorrect[keyLevel1] = true;
if(this.object_b !== undefined &&
Object.keys(this.object_b).length > 0){
// here i am trying to overwrite
objAfterCopy = Object.assign({}, this.object_a, this.object_b[keyLevel1]);
}
}else{
valueObj[keyLevel2] = valueLevel2;
this.object_b[keyLevel1] = valueObj;
}
}
if (!isIncorrect[keyLevel1]){
this.object_a[keyLevel1] = state[Object.keys(state)[count]];
count++;
}
}
上面的代码所做的是它检查在数字字段中分配的任何负数或“NA”,如果是这种情况,那么它将正确的标志分配为真。如果数字是有效数字,那么它将尝试从 object_b 复制该数字并将其覆盖到 object_a 的正确属性中。我希望这个解释有所帮助。
我想用 object_b 替换status1
object_a 的属性。
我想要的是?
所以object_a的最终输出应该是:
object_a = {
"status1": {
"volume": 300,
"processed": 200,
"progress": 100
},
"status2": {
"volume": 100,
"processed": 23,
"progress": 77
},
"status3": {
"volume": 100,
"processed": 23,
"progress": 77
},
"status4": {
"volume": 50,
"processed": 2,
"progress": 3
}
}
我试过的
Object.assign({}, this.object_a["status1"], this.object_b["status1"]);
我尝试这样做,但随后它object_a
用status1
值替换了整个,删除了所有其他属性。
我也试过
this.object_a["status1"] = this.object_b["status1"]
但随后它抛出Cannot assign to read only property
有人可以告诉我为什么它不起作用吗?我只是无法让它工作。
解决方案
尝试这个:
object_a = {...object_a, status1: object_b.status1}
当然,它们都必须至少是const
这样的:
const object_a
和const object_b
甚至更简单:
object_a.status1 = {...object_b.status1}
推荐阅读
- google-apps-script - 如何为谷歌日历创建插件?可能吗?
- javascript - 如何在不同按钮之间交替颜色?
- javascript - z-index issue with custom form field (select)
- sql-server - 如何从 web-api 获取图像文件?
- apache - 无法访问在 CentOS 上运行的虚拟主机
- ruby - :[] 是什么意思
- c++ - 如何创建用于存储和返回浮点数组的结构?
- javascript - Angular 风格:动态添加带有叠加层的背景图像
- android - 如何通过 ADB Shell 在 Android 中安装包
- php - 如何在wordpress的自定义主题中添加recaptcha