3

I am working on the following snippet. Why am I not able to get the

let node = 'Em2';
console.log(data.node.c2);

work? As you can see I am able to get data while passing data.Em2.c1 but a dynamic format like this let node = 'Em2'; console.log(data.node.c2); I am getting this error

TypeError: Cannot read property 'c2' of undefined

Code:

var data ={
   "Em1": { "c1":"#FFF", "c2":"#EEE" },
   "Em2": { "c1":"#DDD", "c2":"#ooo" }
}


let node = 'Em2';

console.log(data.Em2.c1);
console.log(data.node.c2);

var data ={
   "Em1": { "c1":"#FFF", "c2":"#EEE" },
   "Em2": { "c1":"#DDD", "c2":"#ooo" }
}


let node = 'Em2';

console.log(data.Em2.c1);
console.log(data.node.c2);
halfer
  • 19,471
  • 17
  • 87
  • 173
Mona Coder
  • 5,994
  • 17
  • 60
  • 118

2 Answers2

2

Use square braces [] to access object member via variable

var data ={
   "Em1": { "c1":"#FFF", "c2":"#EEE" },
   "Em2": { "c1":"#DDD", "c2":"#ooo" }
}


let node = 'Em2';

console.log(data.Em2.c1);
console.log(data[node].c2);

Similar question: how to access object property using variable

Alesj
  • 5,581
  • 1
  • 16
  • 33
0

Instead of console.log(data.node.c2), try console.log(data[node][c2])

Paul McLoughlin
  • 2,174
  • 2
  • 15
  • 23