推送到数组只读取Javascript中的第二个索引

Push to array just read second index in Javascript

本文关键字:第二个 索引 Javascript 读取 数组      更新时间:2023-09-26

我在将数组转换为另一个数组时遇到问题。当我尝试推入新数组时,它只添加第二个索引。

这是我的阵列:

var emailAddr = [
    {
        customerID : "C20121121221327_249",
        email : "fanjavaid@gmails.com",
        files : [
            "201409011141106_082895250262",
            "201410011171208_082895250262"
        ]
    },
    {
        customerID : "C20121121221327_300",
        email : "fandi.java@gmail.com",
        files : [
            "201409011141106_xxx",
        ]
    }
];

这里是我创建新数组的代码:

var penampungan = [];
for (var i = 0; i < emailAddr.length; i++) {
    var data = {
        customerID : emailAddr[i].customerID,
        email : emailAddr[i].email
    };
    for (var j = 0; j < emailAddr[i].files.length; j++) {        
        data['master'] = emailAddr[i].files[j] + ".pdf";
        data['detail'] = emailAddr[i].files[j] + "_detail.pdf";
        penampungan.push(data);
    }
}
console.log(penampungan);

我的预期结果是这样的:

var newArray = [
    {
        customerID : "C20121121221327_249",
        email : "fanjavaid@gmail.com",
        master : "201409011141106_082895250262.pdf",
        detail : "201409011141106_082895250262_detail.pdf"
    },
    {
        customerID : "C20121121221327_249",
        email : "fanjavaid@gmail.com",
        master : "201410011171208_082895250262.pdf",
        detail : "201410011171208_082895250262_detail.pdf"
    },
    {
        customerID : "C20121121221327_300",
        email : "fandi.java@gmail.com",
        master : "201409011141106_xxx.pdf",
        detail : "201409011141106_xxx_detail.pdf"
    }
];

如何创建?

谢谢。

您需要将data创建移动到内部循环

var penampungan = [];
for (var i = 0; i < emailAddr.length; i++) {       
    for (var j = 0; j < emailAddr[i].files.length; j++) {
        var data = {
             customerID : emailAddr[i].customerID,
             email : emailAddr[i].email
        };        
        data['master'] = emailAddr[i].files[j] + ".pdf";
        data['detail'] = emailAddr[i].files[j] + "_detail.pdf";
        penampungan.push(data);
    }
}

像这样:

var penampungan = [];
for (var i = 0; i < emailAddr.length; i++) {
    for (var j = 0; j < emailAddr[i].files.length; j++) {
        var data = {};
        data.customerID = emailAddr[i].customerID,
        data.email = emailAddr[i].email
        data.master = emailAddr[i].files[j] + ".pdf";
        data.detail= emailAddr[i].files[j] + "_detail.pdf";
        penampungan.push(data);
    }
}
console.log(penampungan);

首先,为什么不创建一个类?它将为您组织数组中每个元素的数据,并减少需要解析的代码量。我可以建议一下吗:

function Info (customerID, email, files) {
    this.customerID = customerID;
    this.email = email;
    this.files = files;
    this.penampungan = function () {
        var newObjects = new Array (files.length);
        for (var i = 0; i < files.length; i++) {
            newObjects [i] = {
                customerID : this.customerID,
                email : this.email,
                master : files [i] + ".pdf",
                detail : files [i] + "_detail.pdf",
            };
        }
    return newObjects;
    }
}

现在制作一个for语句,该语句获取一个Info数组,并将penampungan对象加载到一个新数组中。