Reputation: 137
dont laugh think im having a long day work blonde moment as im a bit out of practice with JS. Any helped appreciated for what I think is a stupidly simple problem.
optionarray = [];
for(i=0;i<response.length;i++) {
optionarray[i]['content'] = response[i]['name'];
optionarray[i]['value'] = response[i]['id'];
}
I keep getting optionarray[i] is undefined when trying to add it to the array and build it. I know im doing something ridiculously stupid I just can't remember what :)
Many thanks for any help in advance.
Upvotes: 3
Views: 3431
Reputation: 44349
I think you just need to initialize the optionarray[i] object within your for loop:
var optionarray = []; //NOTE: I added var here so because otherwise it's an implicit global
for(i=0;i<response.length;i++) {
optionarray[i] = {};
optionarray[i]['content'] = response[i]['name'];
optionarray[i]['value'] = response[i]['id'];
// BETTER: optionarray.push({content: response[i]['name'], value: response[i]['id']});
}
if I'm not mistaken.
Upvotes: 1
Reputation: 437376
You are trying to access properties of optionarray[i]
, which does not exist.
What you should be doing in each iteration is
optionarray
You can do both at once like this:
optionarray = [];
for(i=0;i<response.length;i++) {
optionarray.push({
content: response[i]['name'],
value: response[i]['id']
});
}
Upvotes: 1
Reputation: 902
optionarray = [];
for(i=0;i<response.length;i++) {
optionarray[i] = {
'content' :response[i]['name'],
'value': response[i]['id']
};
}
Upvotes: 3
Reputation: 3374
Try this one
optionarray[i] = [];
optionarray[i]['content'] = response[i]['name'];
optionarray[i]['value'] = response[i]['id'];
You need to define optionarray[i] as array first
Upvotes: 0