簡體   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