关联数组中的键名

Key name in associative array

本文关键字:数组 关联      更新时间:2023-09-26

我试图将项目添加到关联数组,但我的密钥名称没有正确生成。我的代码如下:

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的setter中。试试这个:

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中使用变量。你必须使用object来保存key and value:

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