javascript - 从文本文件加载字符串数组并搜索特定值
问题描述
我正在使用 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());
谢谢你们每一个人的帮助!
解决方案
尝试这个 :
const temp = fs.readFileSync('./list.txt', 'utf8');
const whiteList = temp.trim().split('\n');
const isLastItem = whiteList[whiteList.length - 1] === name;
推荐阅读
- c - FCGI_LISTENSOCK_FILENO 在 FCGI-Applications 中的作用
- python - 在 Windows 10 上安装 glove_python 库
- java - 如何在基类中包含属性文件然后调用其他类?
- c# - 使用 AES CBC PCKS7 填充解密时出现错误填充异常
- java - 按日期对 Firebase 数据进行排序
- flutter - 如何通过 Flutter 上的按钮在列表视图中创建卡片?
- c# - 无法解析“MediatR.IMediator”类型的服务
- java - Android 应用程序仅在特定平板电脑上崩溃 - XmlPullParserException
- javascript - 为什么我不能从 javascript 创建 html?
- r - 在 golem 中添加图标