0

I need to call JSON value by array value, how to do that?

var key = ['name','address'];

for(let i=0; i<key.length; i++){
   console.log(response.data.data.key[i]); // nothing happen
}
Jack Bashford
  • 43,180
  • 11
  • 50
  • 79
Ashtav
  • 2,586
  • 7
  • 28
  • 44
  • 1
    Could you post more of your code? There is no indication what `response` is, what it contains, where it gets initialized, or its possible structure. – user2340824 Apr 22 '19 at 07:05
  • response.data.data is json data, normally I call it like : response.data.data.name, but I want to call it by array value – Ashtav Apr 22 '19 at 07:07

3 Answers3

1

You are looking for bracket notation

var key = ['name','address'];

for(let i=0; i<key.length; i++){
   console.log(response.data.data[key[i]]); 
}
baao
  • 71,625
  • 17
  • 143
  • 203
1

Use dynamic property notation:

var response = {
  data: {
    data: {
      name: "Jack",
      address: "Unknown"
    }
  }
};

var key = ['name', 'address'];

for (let i = 0; i < key.length; i++) {
  console.log(response.data.data[key[i]]);
}
Jack Bashford
  • 43,180
  • 11
  • 50
  • 79
0

You can use forEach() to make a single liner code:

var response = {
  data: {
    data: {
      'name': 'someName',
      'address': 'someAddress',
      'age': 10
    }
  }
}
var key = ['name','address'];

key.forEach((i) => console.log(response.data.data[i]));
Ankit Agarwal
  • 30,378
  • 5
  • 37
  • 62