2017-01-12 9 views
0

私が作成しているゲームでは、アイテムの名前と量を取得し、それをJSON「Player Invetory」に追加する関数があります。関数パラメータがJSONオブジェクトに正しく追加されない

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.item:10の代わりにplayer.inventory.coin:10になるようにPlayerインベントリオブジェクトを設定します。同じことが任意のアイテムに適用されるので、インベントリではどのタイプのユニークアイテムも動的に追加できます。

私は他の同様の質問をしましたが、自分と同じ問題を抱えている人はいませんでしたが、この問題が自分自身とは何かを完全には分かっていないからです。困った。

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

答えて

2

あなたはこのようなあなたのinventoryオブジェクトにitem変数に渡す必要があります:このように

+1

ああ私は今よく分かります。説明していただきありがとうございます。私はあなたのソリューションを適用し、それは働いた。私はできるときあなたの答えを数分で受け入れます。 – Timble

1

player.inventory[item] = amount; 

これはitem変数に文字列'coin'を使用すると、設定したものとinventoryオブジェクトのキー:

player.inventory['coin'] = amount; 
+1

答えをいただきありがとうございます。私は答えの背後にある理由を説明してくれたので、他の答えを受け入れるつもりですが、それでもまだ正しいものとして投票しました。 – Timble

関連する問題