[英]iteratively adding to an array of objects in Javascript
我正在嘗試使用以下結構迭代地創建 object:
var series = {
data: [{
name: 'some text',
y: 0
},
{
name: 'some other text',
y: 1
}]
}
到目前為止,以下是我的代碼:
var series = {
data: []
};
var datatemp = {
y: '',
name: ''
};
for (var i=0; i<10; i++) {
datatemp.y = i;
datatemp.name = "namelabel"+i;
series.data.push(datatemp);
}
但是我得到的是數組的所有元素中 series.data[i].y 和 series.data[i].name 的最終值,而不是我所期望的,這是 i 迭代的計數器的不同值。 感謝您對我做錯的事情的指導。 提前致謝!
為了補充 Mimisbrunnr 所說的,您甚至可以這樣做:
for (var i=0; i<10; i++) {
series.data.push({y: i, name: "namelabel"+i});
}
不需要中間變量。
您需要為 for 循環的每次迭代創建一個新的 datatemp,否則您每次只需將相同的 object 傳遞到數組中並修改它的值。
for (var i=0; i<10; i++) {
var datatemp = {};
datatemp.y = i;
datatemp.name = "namelabel"+i;
series.data.push(datatemp);
}
var series = {
data: []
};
for (var i=0; i<10; i++) {
var datatemp={};
datatemp.y = i;
datatemp.name = "namelabel"+i;
series.data.push(datatemp);
}
for (var i=0; i<10; i++) {
console.log(series.data[i].y);
console.log(series.data[i].name);
}
對象在 javascript 中通過引用傳遞,在您的示例中,您只有一個由名稱 datatemp 引用的datatemp
,每次您為其其中一個成員分配一個新值時,舊成員都會被覆蓋,因此您必須創建一個新的 ZA8CFDE6331BD59EB2ACZF4B對於循環的每次迭代。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.