如何通过for循环生成对象?属性名未正确解析问题求助
解决JavaScript循环中对象属性名未正确引用变量的问题
嘿,这个问题我之前写代码的时候也踩过坑!核心原因很简单:你直接在对象字面量里写key时,JavaScript会把它当成字符串字面量(也就是固定的"key"),而不是去读取变量key的实际值(比如你期望的"name")。
解决方案:用ES6计算属性名语法
只要把属性名变量用方括号[]包裹起来,JavaScript就会先计算括号里变量的值,再把这个值作为对象的属性名。
修改后的代码如下:
const person = { name: "smith", age: 30 }; for (let key in person) { let obj = { [key]: person[key] }; // 关键:用[]包裹key变量 console.log(obj); }
运行这段代码后,输出就完全符合你的预期了:
{ name: "smith" }
{ age: 30 }
额外小技巧
计算属性名还支持表达式,比如你想把属性名转成大写的话,可以这么写:
let obj = { [key.toUpperCase()]: person[key] };
这样输出的就是{ NAME: "smith" },灵活性拉满~
内容的提问来源于stack exchange,提问作者rvncpn
相关产品推荐
相关产品推荐

