I'm looping over an array, getting data from an API on each iteration.
I want to pass data from all iterations of the loop from my express server to the browser using res.json(), so I want to create an object that contains an object of data for each API call, as well as some other key-value pairs that will be created depending on what is returned.
e.g.
on loop index 0:
artist0:
{
data: 'data',
moreData: 'more-data'
}
on loop index 1:
artist1:
{
data: 'data',
moreData: 'more-data'
}
etc
I would use an array, but one of the calls (at random) will result in another key value pair, e.g.:
correctAnswer: 'a_url.com'
this will be generated by one of the earlier API calls at random, so I cant get it at the other end using its array index.
I need the key 'correctAnswer', so I also need each object of API data to be identified by which API call it came from.
Short question: Can I name keys based on variables?
As always, your kind help is greatly appreciated :-)
You could solve this by not putting artists directly in the object, like this, using a array inside a single attribute of the object:
{
"artists": [
{
"data": "data",
"moreData": "more-data"
},
{
"data": "data",
"moreData": "more-data"
}
],
"correctAnswer": 3
}
Or alternatively, if you really want a dynamic key you can use
{
[`artist${artistIndex}`]: {'data': 'data'}
}
This might help you
"ES6 defines ‘ComputedPropertyName’ as part of the grammar for object literals, which helps use a variable for a key. Object keys can be dynamically assigned in ES6 by placing an expression in square brackets"