[英]Key name in associative array
我正在尝试将项目添加到关联数组,但未正确生成我的密钥名称。 我的代码如下:
var room_name = $('#room_name').val();
var item_name = $('#item_name').val();
var item_description = $('#item_description').val();
roominventory[room_name] = { item_name : item_description };
正在发生的事情是我得到
{
"Correct room name": {
"item_name": "correct item description"
}
}
除了item_name
之外,一切正常。 我希望键名是item_name
的值,但我只是得到文本item_name
。
任何想法我做错了什么?
您不能使用您正在使用的语法在对象键中使用变量,因为它们是按字面意思理解的。 您需要使用括号表示法,因为您在roominventory
的设置器中。 试试这个:
var room_name = $('#room_name').val();
var item_name = $('#item_name').val();
var item_description = $('#item_description').val();
var obj = {};
obj[item_name] = item_description;
roominventory[room_name] = obj;
作为替代方案,您可以使用
roominventory[room_name] = {[item_name] : item_description};
正如 Rory 指出的,你不能在 key 中使用变量。 你必须使用一个包含key and value
的object
:
//wrong one
var roominventory = {};
var room_name = "something";
var item_name = "something item";
var item_description = "something description";
roominventory[room_name] = {item_name : item_description};
console.log(roominventory);
//correct way
var roominventory1 = {};
var room_name = "something";
var item_name = "something item";
var item_description = "something description";
var obj = {};
obj[item_name] = item_description;
roominventory1[room_name] = obj;
console.log(roominventory1);
var room_name = $('#room_name').val(); var item_name = $('#item_name').val(); var item_description = $('#item_description').val(); roominventory = new Array(); roominventory[room_name] = {}; roominventory[room_name][item_name] = item_description;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.