我正在尝试使用另一个的属性创建一个JSON对象。我正在使用一系列嵌套for循环,尝试发现每个field.name
的内容,然后创建一个新对象job.id
并指定field.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])
。
提前致谢:)
答案 0 :(得分:1)
从您显示的代码看来,您似乎在所有迭代中使用相同的作业对象。因此,在所有迭代中只有一个作业对象正在更新并被推送到作业数组。尝试创建一个新的作业对象并将其推送到外部循环中的作业数组。
我假设你在第一次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());