往數組中push對象, 會覆蓋之前push的值
阿新 • • 發佈:2019-03-03
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的值