Javascript Lodash嵌套的forEach,带有创建JSON的if语句
我正在尝试使用另一个对象的属性创建一个JSON对象。我正在使用一系列嵌套for循环,试图发现每个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;
字段的内容。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之前定义的。