0

I have strange issue, which I don't understand. I would like to make a JSON Object in JavaScript. My example code:

$(document).ready(function(){

var myJson = new Object();
var data = new Object();
myJson.items = [];

data.name  = 'test';

for (i = 0; i < 5; i++){
  data.counter = i;
  myJson.items.push(data);  
}
console.log(JSON.stringify(myJson));

});

Output:

{"items":[{"name":"test","counter":4},{"name":"test","counter":4},{"name":"test","counter":4},{"name":"test","counter":4},{"name":"test","counter":4}]}

Why the counter variable in JSON have always value 4 ??????

2 Answers2

4

You are always working on the same data object
instead try putting data object initialization in loop

var myJson = new Object();

myJson.items = [];



for (i = 0; i < 5; i++){
  var data = new Object();
  data.name  = 'test';
  data.counter = i;
  myJson.items.push(data);  
}
console.log(JSON.stringify(myJson));
asdf_enel_hak
  • 7,474
  • 5
  • 42
  • 84
1

create a new object of var data = new Object(); inside for loop, comment the above one, also put data.name = 'test'; inside for loop

James
  • 729
  • 6
  • 10