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
  • 40,575
  • 10
  • 44
  • 74
Ashtav
  • 1,956
  • 6
  • 23
  • 39
  • 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
  • 67,185
  • 15
  • 124
  • 181
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
  • 40,575
  • 10
  • 44
  • 74
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
  • 29,658
  • 5
  • 35
  • 59