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,824
  • 17
  • 99
  • 186
Mona Coder
  • 6,212
  • 18
  • 66
  • 128

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

Alejandro
  • 5,834
  • 1
  • 19
  • 36
0

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

Paul McLoughlin
  • 2,279
  • 2
  • 18
  • 24