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

如何通过两个数组索引创建JavaScript对象?为何直接赋值失败?

为什么用数组索引创建JavaScript对象会失败?

在ES5及更早的JavaScript版本中,对象字面量的属性名仅支持标识符或字符串字面量,无法直接使用表达式(比如arr[0]这类动态值)。你写的{arr[0]:arr[1]}里,arr[0]是一个表达式,不符合当时的语法规范,所以会抛出语法错误。

解决办法

1. ES5兼容写法

先创建空对象,再通过方括号语法动态赋值属性:

var arr = ["name","john"];
var obj = {};
obj[arr[0]] = arr[1];

方括号语法天生支持用表达式作为属性名,这是ES5就具备的特性。

2. ES6+ 计算属性名写法

ES6引入了计算属性名语法,允许在对象字面量中直接用表达式定义属性名,只需将表达式包裹在方括号内:

const arr = ["name","john"];
const obj = { [arr[0]]: arr[1] };

这样就能直接通过数组索引的值来定义对象的属性名,代码更简洁。

内容的提问来源于stack exchange,提问作者Aidenhsy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:20:33