143

I have an object and I can reference key a as in the following:

var obj = {
   a: "A",
   b: "B",
   c: "C"
}

console.log(obj.a); // return string : A

I want to get the value by using a variable to reference the object key as below:

var name = "a";
console.log(obj.name) // this prints undefined, but I want it to print "A"

How can I do this?

phentnil
  • 2,195
  • 2
  • 14
  • 22
Chameron
  • 2,734
  • 8
  • 34
  • 46

9 Answers9

176

Use [] notation for string representations of properties:

console.log(obj[name]);

Otherwise it's looking for the "name" property, rather than the "a" property.

David Tang
  • 92,262
  • 30
  • 167
  • 149
27

obj["a"] is equivalent to obj.a so use obj[name] you get "A"

Tejashree
  • 750
  • 12
  • 14
Longda
  • 289
  • 2
  • 3
14

You can get value of key like these ways...

var obj = {
   a: "A",
   b: "B",
   c: "C"
};

console.log(obj.a);

console.log(obj['a']);

name = "a";
console.log(obj[name])
Rohit Tagadiya
  • 3,373
  • 1
  • 25
  • 25
13

Use this syntax:

obj[name]

Note that obj.x is the same as obj["x"] for all valid JS identifiers, but the latter form accepts all string as keys (not just valid identifiers).

obj["Hey, this is ... neat?"] = 42
4

I use the following syntax:

objTest = {"error": true, "message": "test message"};

get error:

 var name = "error"
 console.log(objTest[name]);

get message:

 name = "message"
 console.log(objTest[name]);
Aman Desai
  • 233
  • 2
  • 11
ppaulino
  • 69
  • 3
3
productList = {
        "name": "Title"
}
var key = "name";

console.log(productList[key])

productList is an arbitraty object with only one key. the key variable holds the same key as a string.

Using the [] you can access the value dynamically.

Mathias
  • 2,484
  • 1
  • 19
  • 17
aadilraza339
  • 103
  • 3
2

https://jsfiddle.net/sudheernunna/tug98nfm/1/

 var days = {};
days["monday"] = true;
days["tuesday"] = true;
days["wednesday"] = false;
days["thursday"] = true;
days["friday"] = false;
days["saturday"] = true;
days["sunday"] = false;
var userfalse=0,usertrue=0;
for(value in days)
{
   if(days[value]){
   usertrue++;
   }else{
   userfalse++;
   }
    console.log(days[value]);
}
alert("false",userfalse);
alert("true",usertrue);
sudheer nunna
  • 1,659
  • 15
  • 17
2

fyi, if the type of the object is not known it's a little trickier:

    var name = "a";
    console.log(obj[name as keyof typeof obj]);

(refer to this post)

flawesome
  • 322
  • 3
  • 9
1
var o = { cat : "meow", dog : "woof"};
var x = Object.keys(o);

for (i=0; i<x.length; i++) {
  console.log(o[x[i]]);
}

IAB