繁体   English   中英

嵌套Object.keys forEach循环和构建合并的JSON对象数组的问题

[英]Problems with nested Object.keys forEach loop and building array of merged JSON objects

我有两个CSV文件,一个包含路由步骤,一个具有ID列表。 我需要将每个id添加到每个路由步骤的开始。 我正在使用Node.js。

var routeNumFile = '/routing_numbers.csv';
var routeStepFile = '/routing_steps.csv';

const csvToJson = require('csvtojson');
const jsonToCsv = require('json2csv').parse;
const fs = require('fs');

var routeNumArray;
var routeStepArray;
try {
    routeNumArray = await csvToJson().fromFile(routeNumFile);
} catch (err) {
    console.log("error in reading csv file")
}

try {
    routeStepArray = await csvToJson().fromFile(routeStepFile);
} catch (err) {
    console.log("error in reading csv file")
}

var outputArray = new Array;
var outputPath = '/gitlab/BSI_Create_Csv_Import/finalOutput.csv';

if (routeNumArray != null && routeStepArray != null) {
    Object.keys(routeNumArray).forEach(function (key1) {

        Object.keys(routeStepArray).forEach(function (key2) {

            var comboObj = Object.assign(routeNumArray[key1], routeStepArray[key2]);
            console.log(comboObj);
            outputArray.push(comboObj);
        });

    });
}
console.log(outputArray);


var csv = jsonToCsv(outputArray);
fs.writeFileSync(outputPath, csv);

我想要的是console.log(comboObj)的输出。 但是,当我将其放入数组中时,我只是一遍又一遍地得到路由步骤CSV中的最后一个条目。 如果我直接在创建comboObj的地方使用流来编写它,那么它通常可以工作。 如果这样做,我首先将对象转换为CSV,并且输出使我的标题留在每行末尾。 它从JSON对象数组到CSV编写了更加整洁的内容。

因此,我正在尝试将所有组合的对象放在一个数组中,以便将其全部转换为CSV并将其写入文件。 谁能告诉我我的方法出了什么问题?

您应该创建一个新对象并为其分配属性,如下所示:

var comboObj = Object.assign({}, routeNumArray[key1], routeStepArray[key2]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM