关联数组中的键名
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
的 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;
正如 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);
作为替代方案,您可以使用
roominventory[room_name] = {[item_name] : item_description};
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;
我正在尝试将项目添加到关联数组,但我的键名没有正确生成。我的代码如下:
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;
正如 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);
作为替代方案,您可以使用
roominventory[room_name] = {[item_name] : item_description};
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;