29

Is there a way to convert variable names to strings in javascript? To be more specific:

var a = 1, b = 2, c = 'hello';
var array = [a, b, c];

Now at some point as I go through the array, I need to get variable names (instead of their values) as strings - that would be 'a' or 'b' or 'c'. And I really need it to be a string so it is writeable. How can I do that?

0

3 Answers 3

30

Use a Javascript object literal:

var obj = {
    a: 1,
    b: 2,
    c: 'hello'
};

You can then traverse it like this:

for (var key in obj){
    console.log(key, obj[key]);
}

And access properties on the object like this:

console.log(obj.a, obj.c);
Sign up to request clarification or add additional context in comments.

5 Comments

The quotes around the properties' names are optional - why not save yourself some typing and drop them?
Actually, I am glad he included the quotes, it all together makes much more sense to me.
There are several ways to populate an object literal with values - choose the one you like best: obj={a:5}; obj={'a':5}; obj={},obj.a=5; obj={},obj['a']=5;
I originally didn't have quotes - check my edits. Decided to add them because, in some cases, you do need quotes. And JSON requires quotes. It's just a good habit to pick up.
I would normally do console.log() of course, but I didn't want to assume Firebug.
3

What you could do is something like:

var hash = {};
hash.a = 1;
hash.b = 2;
hash.c = 'hello';
for(key in hash) {
    // key would be 'a' and hash[key] would be 1, and so on.
}

Comments

1

Goint off of Triptych's stuff (Which Thanks)...

(function(){
  (createSingleton = function(name){  // global
    this[name] = (function(params){
      for(var i in params){
        this[i] = params[i];
        console.log('params[i]: ' + i + ' = ' + params[i]);
      }
      return this;
    })({key: 'val', name: 'param'});
  })('singleton');
  console.log(singleton.key);
})();

Just thought this was a nice little autonomous pattern...hope it helps! Thanks Triptych!

Comments

Your Answer

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