JavaScript对象数组中能否使用方括号[]作为对象键名?
JavaScript对象键名使用方括号的正确方式
当然可以在JavaScript对象的键名中使用方括号!你遇到报错的原因是语法写错了,不是方括号本身不能用。咱们来拆解问题并给出正确的实现方式:
你的代码报错的核心原因
你写的这段代码有两个明显的语法错误:
var objectArray ={ address[address_number] = "text" }
- 对象字面量的键值对必须用**冒号
:**分隔,而不是等号=; - 包含方括号这类特殊字符的键名,要么用引号包裹,要么用ES6的计算属性语法,否则JS解析器会把方括号当成表达式解析,而你这里的
address[address_number]如果不是预先定义的变量,就会直接触发引用错误。
正确的实现方式
根据你的需求,分两种场景给出写法:
场景1:键名是固定的字符串(比如address[address_number])
这种情况只需要用单引号或双引号把键名包裹起来,同时把等号改成冒号即可:
// 创建对象(注意你之前命名的objectArray其实是对象,不是数组) var myObject = { "address[address_number]": "text" }; // 访问这个键值对的时候,也要用括号加引号的方式 console.log(myObject["address[address_number]"]); // 输出:text
场景2:键名是动态的(比如address_number是一个变量)
如果你想让方括号里的内容是动态变量,可以用ES6引入的计算属性名语法,用反引号包裹模板字符串:
// 假设这是你的动态变量 const address_number = "101"; // 创建带动态键名的对象 var myObject = { [`address[${address_number}]`]: "text" }; // 访问方式 console.log(myObject[`address[${address_number}]`]); // 输出:text
额外提醒:对象和数组的区别
你代码里的objectArray命名有点误导——它是用{}定义的普通对象,而数组是用[]定义的。如果你的需求是创建对象数组(数组里包含多个对象),写法应该是这样:
var objectArray = [ { "address[address_number]": "text" }, { "address[address_number]": "another text" } ];
内容的提问来源于stack exchange,提问作者Erik Boud
相关产品推荐
相关产品推荐

