Keys in JS objects must be unique.
What happens is:
var obj = { key : value1 }
sets obj['key'] to value1 .
The subsequent declaration of key : value2 overwrites your previous one.
Possible solution to your problem:
var obj = { key : [value1, value2] } for (var i in obj) { if (obj[i] instanceof Array) { for (var k; k < obj[i].length; k++) { console.log(obj[i][k]) } } else { console.log(obj[i]); } }
Another, perhaps more elegant, solution would be to change the way you store your data as follows:
var obj = [ { key : 'SomeKey' , value : 'foo' }, { key : 'SomeKey' , value : 'bar' }, { key : 'SomeOtherKey', value : 'baz' } ];
This obviously allows you to use multiple records with the same key. The query can be executed somewhere in these lines:
values = []; for (var i = 0; i < obj.length; i++) { if (obj[i].key === 'SomeKey') { values.push(obj[i].value); } } console.log(values);
source share