首页 > 解决方案 > 从文本文件加载字符串数组并搜索特定值

问题描述

我正在使用 Node.js 编写一个简单的聊天浏览器应用程序。为了防止多个用户使用相同的名称,我将所有用户的名称存储在一个数组中

userList.push(socketName);

每次有人连接时,我都会在这个数组中查找他的名字

function inList(name, list) {
  if(list.indexOf(name) === -1)
    return false;
  return true;
}

这工作完美。我的问题是我还想检查外部文本文件中的白名单,每行只有一个名称。我的代码是

let temp = fs.readFileSync('./list.txt', 'UTF-8');
var whiteList = temp.split('\n');
if(inList(socketName, whiteList)) {
   //let user join
}

这是相同的逻辑,我只是​​从文件中加载列表。在这种情况下,函数 inList() 仅当测试的名称在文件的最后一行时才会返回 true。列表中的任何其他名称都会导致它返回 false,我不知道为什么。

我认为 string.split('\n') 可以将 '\n' 留在返回的数组上,所以我尝试在控制台和另一个文件上打印所有 whiteList[] 元素,但一无所获。

我实际上对 javascript 没有那么丰富的经验,希望能提供任何帮助

谢谢!

编辑:按照@Barmar 的建议使用

var whiteList = temp.split('\n').map(s => s.trim());

谢谢你们每一个人的帮助!

标签: javascriptnode.jsstringfs

解决方案


尝试这个 :

const temp = fs.readFileSync('./list.txt', 'utf8');
const whiteList = temp.trim().split('\n');
const isLastItem = whiteList[whiteList.length - 1] === name;

推荐阅读