首页 > 解决方案 > console.log(array) 打印期望值,但返回 undefined

问题描述

在过去的几天里,我做了一些研究,但找不到解决方案。我有这个函数,它读取一个 csv 文件,解析内容,分离数据并推送到两个单独的数组中。

function formObjects(file) {
  fs.createReadStream(file)
    .pipe(csv())
    .on("data", (data) => results.push(data))
    .on("end", () => {
      results.forEach((item) => {
        //these arrays will be an array of strings until parsed
        if (item["Credit or Debit"] === "Credit") {
          let obj = {
            Description: item["Description"],
            Amount: parseInt(item["Amount"]),
          };
          credits.push(obj);
        }
        if (item["Credit or Debit"] === "Debit") {
          let obj = {
            Description: item["Description"],
            Amount: parseInt(item["Amount"]),
          };
          debits.push(obj);
        }
      });
      //return debits, credits <--- returns undefined
      console.log(debits);
      console.log(credits);
    });
}
formObjects("august.csv");

如上所述,我可以使用 console.log(debits) 并打印预期的对象数组,但如果我尝试返回该数组以在另一个函数中使用,它会返回未定义的。我尝试添加return credits.push(obj)return debits.push(obj)但无济于事。希望有人能把我带到这里!谢谢!

使用 npm 模块 fs 和 csv-parser

标签: javascriptnode.jsnpm

解决方案


推荐阅读