Javascript 使用nodejs创建考勤登记簿

Javascript 使用nodejs创建考勤登记簿,javascript,node.js,Javascript,Node.js,问题: 从.txt文件中逐行读取学生姓名 对于每个名字,询问学生是否在课堂上 例如: 迈克尔在上课吗?[是/否] 让用户输入是或否 将每个名称和条目存储在另一个.txt文件中 解决方案: 我编写了这段几乎可以正常工作的代码,只是在通过readlineSync模块循环以逐个提示名称时遇到了问题 var fs = require("fs"); var text = fs.readFileSync("./test.txt"); var nameByLine = text.toString().spli

问题:

从.txt文件中逐行读取学生姓名

对于每个名字,询问学生是否在课堂上

例如: 迈克尔在上课吗?[是/否]

让用户输入是或否

将每个名称和条目存储在另一个.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"));
};
预期产出: -
name[1]
是否在类中:是 -是否
名称[2]
在类中:否

结果“ -类中是否有
name[1]name[2]
:是

在运行代码之前

在运行代码之后


您正在使用换行符(
\n
)拆分文件,但该文件为CSV格式

因此有两种解决方案:

1) 将名称放在一行中。代码将按原样工作。
2) 使用逗号分隔行

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

console.log(nameByLine)
显示了什么?看起来您正在读取的名称不是用换行符分隔的,而是一个CSV。您可以显示一个注册表列表文件的示例吗?[“Bisi”、“John”、“Davis”、“Kemi”、“Olaoluwa”]@James.txt中的名称用逗号分隔file@PeterAbolude嗯,好吧,那我就不麻烦了,因为你已经接受了答案”\_(ツ)_/“完美。使用第二种方法