【问题标题】:Problems with nested Object.keys forEach loop and building array of merged JSON objects嵌套 Object.keys forEach 循环和构建合并 JSON 对象数组的问题
【发布时间】:2019-05-22 06:56:27
【问题描述】:

我有两个 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 并将其写入文件。谁能告诉我我的方法出了什么问题?

【问题讨论】:

  • 不需要的输出:{id:'1',操作序列:25},{id:'1',操作序列:25},{id:'1',操作序列:25}, {id:'1',操作序列:25},{id:'1',操作序列:25} 所需输出:{id:'1',操作序列:5},{id:'1',操作序列: 10}, {id: '1', 操作序列: 15}, {id: '1', 操作序列: 20}, {id: '1', 操作序列: 25}

标签: javascript node.js json csv json2csv


【解决方案1】:

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

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

【讨论】:

  • 就是这样!非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2019-06-11
  • 2014-05-18
  • 1970-01-01
相关资源
最近更新 更多