带for循环的Javascript数组,仅返回最后一个元素

vie*_*oli 3 javascript arrays loops

我有一个for循环,将数据添加到array. 但是当我console.log数组时,它充满了循环的最后一项for

这是我的代码:

var materialsData = results[1].data, // results[1].data is a http.get return
ln = Object.size(materialsData),
materials = [],
material = {};
material['Product'] = {};

for (var i = 0; i < ln; i++) {
    material.Product['Name'] = materialsData[i].Product.Name;
    material.Product['Id'] = materialsData[i].Product.Id;
    material.StartingDate = materialsData[i].StartingDate.replace("T00:00:00", "").split('-').reverse().join('-');
    material.Device = materialsData[i].Device;
    materials.push(material);
}
Run Code Online (Sandbox Code Playgroud)

Sat*_*pal 5

material在块中定义for。当对象通过引用传递时,对象也会object被更新并推送到数组中。

for (var i = 0; i < ln; i++) {
    var material = {
        Product : {
            Name : materialsData[i].Product.Name,
            Id : materialsData[i].Product.Id,
        },
        StartingDate : materialsData[i].StartingDate.replace("T00:00:00", "").split('-').reverse().join('-'),
        Device : materialsData[i].Device
    };
    materials.push(material);
}
Run Code Online (Sandbox Code Playgroud)

此外,您可以使用Array.map()

var materials = materialsData.map(function(m){
    return {
        Product : {
            Name : m.Product.Name,
            Id : m.Product.Id,
        },
        StartingDate : m.StartingDate.replace("T00:00:00", "").split('-').reverse().join('-'),
        Device : m.Device
    };
})
Run Code Online (Sandbox Code Playgroud)