簡體   English   中英

迭代地添加到 Javascript 中的對象數組

[英]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);
}

http://jsfiddle.net/Vp8EV/

對象在 javascript 中通過引用傳遞,在您的示例中,您只有一個由名稱 datatemp 引用的datatemp ,每次您為其其中一個成員分配一個新值時,舊成員都會被覆蓋,因此您必須創建一個新的 ZA8CFDE6331BD59EB2ACZF4B對於循環的每次迭代。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM