Javascript 函数参数未正确添加到JSON对象

Javascript 函数参数未正确添加到JSON对象,javascript,json,object,Javascript,Json,Object,在我正在创建的游戏中,我有一个函数,它获取一个项目的名称和数量,并将其添加到JSON“Player Invetory”中 代码如下: function inventory(addOrRemove, item, amount) { console.log(item); if (addOrRemove == 'add') { if (player.inventory.item== undefined) { player.inventory.item=

在我正在创建的游戏中,我有一个函数,它获取一个项目的名称和数量,并将其添加到JSON“Player Invetory”中

代码如下:

function inventory(addOrRemove, item, amount) {
console.log(item);
    if (addOrRemove == 'add') {
        if (player.inventory.item== undefined) {
            player.inventory.item= amount;
        } else {
            player.inventory.item= player.inventory.item+ amount;
        }
    } 
console.log(player.inventory)
}
以这种方式调用函数时,输出如下所示:

inventory('add','coin',10)
// In the console log on line 2, "item" is defined as "coin"
// The player invetory object as called for in the console on line 10 has one value, "item: 10"
现在的问题是,它不会基于函数参数添加到数组中。我希望玩家库存对象是“player.inventory.coin:10”,而不是“player.inventory.item:10”。这同样适用于任何项目,因此库存可以动态添加任何类型的唯一项目

我寻找了其他类似的问题,但找不到与我有相同问题的人,虽然这可能是因为我不完全确定这个问题叫我自己,但我确实付出了努力,并被难倒了。

像这样:

if (player.inventory[item] == undefined) {
     player.inventory[item] = amount;
} else {
    player.inventory[item] = player.inventory[item] + amount;
    // or: player.inventory[item] += amount;
}
像这样:

if (player.inventory[item] == undefined) {
     player.inventory[item] = amount;
} else {
    player.inventory[item] = player.inventory[item] + amount;
    // or: player.inventory[item] += amount;
}

您需要将
变量传递到
库存
对象,如下所示:

player.inventory[item] = amount;
这将使用
变量中的字符串
'coin'
,并将其设置为
库存
对象中的键:

player.inventory['coin'] = amount;

您需要将
变量传递到
库存
对象,如下所示:

player.inventory[item] = amount;
这将使用
变量中的字符串
'coin'
,并将其设置为
库存
对象中的键:

player.inventory['coin'] = amount;

啊,我现在明白多了。感谢您的解释以及如何修复它!我应用了你的解决方案,效果很好。如果可能的话,我会在几分钟内接受你的回答。啊,我现在明白多了。感谢您的解释以及如何修复它!我应用了你的解决方案,效果很好。如果可能的话,我会在几分钟内接受你的回答。谢谢你的回答,这个解决方案通常是多么简单。我会接受另一个答案,因为它更好地解释了答案背后的原因,但尽管如此,我还是对你的答案投了赞成票,因为它仍然是正确的。谢谢你的答案,解决方案通常是多么简单。我会接受另一个答案,因为它更好地解释了答案背后的原因,但尽管如此,我还是对你的答案投了赞成票,因为它仍然是正确的。