You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:17:29