I need to define a hash for posting some ajax data using jQuery.
The hash will look something like:
var setname = 'set_1';
elements = { set_1: {'beer','water','wine'} };
The challenge I need to solve is ‘set-1’ (the key of Array elements) should be dynamically named based on the value of var setname.
I want to avoid using eval() of course..
in PHP it can be done using the double dollar sign like this: $$setname, but what’s the way to do this in JavaScript?
You can do what you’d like to like so:
See this in action at http://jsfiddle.net/x5KRD/.
All objects in JS can be accessed using dot notation (
obj.method()orobj.property), or bracket notation (obj['method']()orobj['property']). Using bracket notation lets you dynamically specify method/property/key names.For example, while clumsy,
window['alert']('hi')is equivalent towindow.alert('hi').Note that your code won’t work as-is, anyways, because you’re using object literal notation (
{'beer','water','wine'}) to contain an array (it should be in square brackets['beer','water','wine']instead). Object literals need to have key-value pairs.