1. 程式人生 > >往數組中push對象, 會覆蓋之前push的值

往數組中push對象, 會覆蓋之前push的值

var 代碼 name 都是 在外 result [ ] length 不同的

錯誤代碼:

var obj = { a: 123, b: 234, c: 345};

var array = [ ];

var resultObj = { };

for(var i = 0; i < obj.length; i++) {

  resultObj.name = obj[i];

  array.push(resultObj);

}

得到的結果: 345, 345, 345; 而不是123, 234, 345;

改造:

var obj = { a: 123, b: 234, c: 345};

var array = [ ];

for(var i = 0; i < obj.length; i++) {

  var resultObj = { };

  resultObj.name = obj[i];

  array.push(resultObj);

};

把resultObj定義在for循環中, 得到的結果就是123,234,345;

原因: 把對象定義在外面, 始終指向一個地址, 每次賦值都賦值給了同一個地址, 所以最後賦值的會覆蓋之前的值;

把對象定義在循環中, 每次循環rusultObj都會指向不同的地址, 每次都是一個新對象

往數組中push對象, 會覆蓋之前push的值