问题:
逐行从.txt文件中读取学生姓名。
对于每个名字,询问学生是否在课堂上。
例如:
迈克尔在上课吗?[是/否]
让用户输入yes或no。
将每个名称和条目存储在另一个.txt文件中。
解决方案:
我已经编写了这个几乎可以工作的代码,只是在通过readlinesync模块循环以一个接一个地提示名称时遇到了问题。

var fs = require("fs");
var text = fs.readFileSync("./test.txt");
var nameByLine = text.toString().split("\n");
var readlineSync = require("readline-sync");
module.exports = function rollCall() {
  let attendance = [];

  nameByLine.forEach(name => {
    let userResp = readlineSync.question(`Is ${name} in class: `);
    if (userResp.toLowerCase() == "yes") {
      present = `${name}:\t\t✅}`;
      attendance.push(present);
    } else {
      absent = `${name}:\t\t❌}`;
      attendance.push(absent);
    }
  });

  attendance;
  return fs.writeFileSync("./newtest.txt", attendance.join("\n"));
};

预期产量:
-在课堂上:是
-在课堂上:没有
“结果”
-在课堂上:是
在运行代码之前
运行代码后

最佳答案

您正在使用换行(\n)拆分文件,但该文件是csv格式的。
所以有两种解决方案:
1)把名字排成一行。代码将按原样工作。
2)用逗号分隔行。

nameByLine.split(',').map((e)=>e.trim()).forEach(...)

09-18 19:32