I need to combine a variable value and a string value into one. The problem is in the function. Iam trying to pull the name of a resource in the “resources” variable and this needs to be combine with “Amount” at the end in a new variable called “resourceName”. For example “FoodAmount” but it ends up giving undefined back when I try to use this in my function.
Any help would be appreciated
var resources = [ "Food", "Wood", "Stone", "Coal", "Copper", "Silver", "Gold", "Diamonds" ]; var playerData = [ {"foodName":"Food", "FoodAmount":"100"}, {"woodName":"Wood", "WoodAmount":"0"}, {"stoneName":"Stone", "StoneAmount":"0"}, {"coalName":"Coal", "CoalAmount":"0"}, {"copperName":"Copper", "CopperAmount":"0"}, {"silverName":"Silver", "SilverAmount":"0"}, {"goldName":"Gold", "GoldAmount":"0"}, {"diamondsName":"Diamonds", "DiamondsAmount":"0"}, ] function updateResources() { for (var i = 0; i <= playerData.length - 1; i++) { resourceName = resources[i] + "Amount"; console.log(playerData[i].resourceName); // Returns undefined?? document.getElementById(resources[i]).innerHTML = playerData[i].resourceName; // Will also return undefined but should be equel to FoodAmount for the first one and so on } }
Advertisement
Answer
You must use playerData[i][resourceName]
(note the square brackets [...]
instead of the dot .
). object.property
is just shorthand for object["property"]
and doesn’t index the object by the variable property
but rather by the string "property"
which yields undefined
as all your objects don’t have a "resourceName"
property set.