Javascript Lodash嵌套的forEach,带有创建JSON的if语句

Javascript Lodash嵌套的forEach,带有创建JSON的if语句,javascript,json,node.js,lodash,Javascript,Json,Node.js,Lodash,我正在尝试使用另一个对象的属性创建一个JSON对象。我正在使用一系列嵌套for循环,试图发现每个字段的内容。name,然后创建一个新对象job.id,并为字段.data赋值。这就是我目前所拥有的 _.forEach(records, function(record) { _.forEach(record.field, function(field) { if(field.name === "ID") { job.id = field.data;

我正在尝试使用另一个对象的属性创建一个JSON对象。我正在使用一系列嵌套for循环,试图发现每个
字段的内容。name
,然后创建一个新对象
job.id
,并为
字段.data
赋值。这就是我目前所拥有的

_.forEach(records, function(record) {
    _.forEach(record.field, function(field) {
        if(field.name === "ID") {
            job.id = field.data;
        }
        if(field.name === "JobNumber") {
            job.job_number = field.data;
        }
        jobs.push(job);
    });
});
output.push(jobs.concat());
然而,我的输出如下

{
    "id": "a-long-job-id",
    "job_number": "fourcharacterjobnumber"
},
{
    "id": "sameasabove",
    "job_number": "sameasabove"
},
{
    "id": "sameasabove",
    "job_number": "sameasabove"
}, ...
似乎发生的事情是阵列没有被更新,因此对此的任何帮助都将不胜感激

注意我希望将其变成一个函数,以便传入一个配置对象,如果存在
if(field.name==“ID”)
,我希望使用
if(field.name===config[field.name])


提前感谢:)

根据您显示的代码,您似乎在所有迭代中使用相同的作业对象。因此,在所有迭代中,只有一个作业对象得到更新并被推送到作业数组中。尝试创建一个新的作业对象,并将其推送到外部循环中的作业数组中

我假设您在第一个forEach之前已经定义了jobs数组

_.forEach(records, function(record) {
    var job = {}; // new object
    _.forEach(record.field, function(field) {
        if(field.name === "ID") {
            job.id = field.data;
        }
        if(field.name === "JobNumber") {
            job.job_number = field.data;
        }
    });
    jobs.push(job); // moved out
});
output.push(jobs.concat());

尝试添加
var job={}就在第一个
之前如果
请添加输入数据和所需结果没错,作业和输出是在第一个forEach之前定义的。