如何在JS脚本中引入txt文本文件以统计字符串中重复单词数量
解决方案
JS加载本地文本文件的实现分两种常见运行场景,对应不同实现方式:
1. Node.js 本地脚本运行场景
直接用Node内置的fs文件模块读取同目录下的TextFile2.txt即可,完整代码如下:
const fs = require('fs'); // 同步读取文本文件内容,指定编码为utf-8拿到字符串格式结果 const rawText = fs.readFileSync('./TextFile2.txt', 'utf8'); // 去掉文本首尾自带的双引号和多余空白,得到纯统计内容 const words = rawText.replace(/^"|"$/g, '').trim(); function countRepeatedWords(sentence) { let words = sentence.split(" "); let wordMap = {}; for (let i = 0; i < words.length; i++) { let currentWordCount = wordMap[words[i]]; let count = currentWordCount ? currentWordCount : 0; wordMap[words[i]] = count + 1; } return wordMap; } console.log(countRepeatedWords(words));
在终端执行node 你的脚本文件名.js即可输出统计结果。
2. 浏览器端运行场景
浏览器出于安全限制不能直接读取本地磁盘文件,需要通过fetch接口请求静态资源形式加载文本文件,完整代码如下:
async function runCount() { // 按静态资源部署路径请求TextFile2.txt const res = await fetch('./TextFile2.txt'); const rawText = await res.text(); const words = rawText.replace(/^"|"$/g, '').trim(); function countRepeatedWords(sentence) { let words = sentence.split(" "); let wordMap = {}; for (let i = 0; i < words.length; i++) { let currentWordCount = wordMap[words[i]]; let count = currentWordCount ? currentWordCount : 0; wordMap[words[i]] = count + 1; } return wordMap; } console.log(countRepeatedWords(words)); } runCount();
注意需要本地启动静态服务运行页面,直接打开本地HTML文件会触发跨域限制导致读取失败。
内容的提问来源于stack exchange,提问作者Eero Jyrgenson
相关产品推荐
相关产品推荐

