14

I have a simple simulated array with two elements:

bowl["fruit"] = "apple";
bowl["nuts"] = "brazilian";

I can access the value with an event like this:

onclick = "testButton00_('fruit')">with `testButton00_`

function testButton00_(key){
    var t = bowl[key];
    alert("testButton00_: value = "+t);
}

However, whenever I try to access the array from within code with a key that is just a non-explicit string, I get undefined. Do I have somehow have to pass the parameter with the escaped 'key'?

1
  • What do you mean by "just a non-explicit string"? Commented Mar 26, 2010 at 15:33

3 Answers 3

26

The key can be a dynamically computed string. Give an example of something you pass that doesn't work.

Given:

var bowl = {}; // empty object

You can say:

bowl["fruit"] = "apple";

Or:

bowl.fruit = "apple"; // NB. `fruit` is not a string variable here

Or even:

var fruit = "fruit";
bowl[fruit] = "apple"; // now it is a string variable! Note the [ ]

Or if you really want to:

bowl["f" + "r" + "u" + "i" + "t"] = "apple";

Those all have the same effect on the bowl object. And then you can use the corresponding patterns to retrieve values:

var value = bowl["fruit"];
var value = bowl.fruit; // fruit is a hard-coded property name
var value = bowl[fruit]; // fruit must be a variable containing the string "fruit"
var value = bowl["f" + "r" + "u" + "i" + "t"];
Sign up to request clarification or add additional context in comments.

Comments

1

You could use JSON if you don’t want to escape the key:

var bowl = {
  fruit: "apple",
  nuts: "brazil"
};

alert(bowl.fruit);

Comments

0

I am not sure I understand you. You can make sure the key is a string like this

if(!key) {
  return;
}
var k = String(key);
var t = bowl[k];

Or you can check if the key exists:

if(typeof(bowl[key]) !== 'undefined') {
  var t = bowk[key];
}

However, I don't think you have posted the non-working code?

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.