如何使用变量存储的值更新JavaScript对象属性
解决方法:将JavaScript变量值赋给对象属性
咱们来一步步捋清楚问题出在哪,以及怎么快速实现你想要的效果:
两种常见场景的正确写法
场景1:初始化data时直接使用temp的值
如果是在定义data的同时就想把temp的值赋给subject_input,你之前的第二种写法其实是正确的——核心是别给temp加引号(加引号会变成字符串"temp",而不是变量存储的实际值)。要是这种写法没生效,大概率是temp的定义位置不对(比如写在data之后),或者作用域出了问题。
示例代码:
// 先定义变量temp const temp = 10; // 直接将temp作为值赋值给subject_input,不要加引号 const data = [ { "1": "1.5", "2": "2", "subject_input": temp, "entry": 1 } ]; // 验证结果 console.log(data[0].subject_input); // 会输出10,符合预期
场景2:已经存在data,需要更新已有的属性值
如果data已经提前定义好了,你不需要重新写整个数组,直接访问数组里的对象并修改属性即可:
示例代码:
// 先定义好初始的data let data = [ { "1": "1.5", "2": "2", "subject_input": "null", "entry": 1 } ]; // 定义temp变量 const temp = 10; // 直接修改第一个对象的subject_input属性 data[0].subject_input = temp; // 验证结果 console.log(data[0].subject_input); // 输出10,完成更新
你之前写法的问题分析
- 第一种写法
"subject_input": "temp":这里你把字符串"temp"赋值给了属性,而不是变量temp存储的实际值,所以自然得不到想要的结果。 - 第二种写法如果没生效,大概率是因为你用
const定义了data之后,又尝试重新赋值整个data数组(const声明的变量不能被重新赋值),或者temp的定义在data之后,导致初始化时temp还未被定义。
额外提示(批量更新场景)
如果你的data数组里有多个对象,需要批量更新subject_input,可以用forEach循环快速处理:
const temp = 10; let data = [ { "1": "1.5", "2": "2", "subject_input": "null", "entry": 1 }, { "1": "3", "2": "4", "subject_input": "null", "entry": 2 } ]; // 批量更新每个对象的subject_input data.forEach(item => { item.subject_input = temp; });
内容的提问来源于stack exchange,提问作者FloppyDogEars
相关产品推荐
相关产品推荐

