繁体   English   中英

关联数组中的键名

[英]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 valueobject

//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);

https://jsfiddle.net/u2j42wsv/

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM