Javascript读取外部文本文件,将文本文件数据作为参数传递

Javascript读取外部文本文件,将文本文件数据作为参数传递,javascript,Javascript,请检查这把小提琴: 这是在字符串数组中查找最长复合词的方法 我希望这个程序能够读取一个本地txt文件,而不是数组,该文件由100000多行文本组成。然后找出最长的复合词。每行有一个单词 我尝试使用FileReader获取数据。我能够正确地传递数据,但在“addPrefix”和“findPrefixes”之间的一些共享变量给我带来了麻烦 我还尝试使用承诺来解释异步行为: function readFile(event) { var file = event.target.files[0];

请检查这把小提琴:

这是在字符串数组中查找最长复合词的方法

我希望这个程序能够读取一个本地txt文件,而不是数组,该文件由100000多行文本组成。然后找出最长的复合词。每行有一个单词

我尝试使用FileReader获取数据。我能够正确地传递数据,但在“addPrefix”和“findPrefixes”之间的一些共享变量给我带来了麻烦

我还尝试使用承诺来解释异步行为:

function readFile(event) {  
  var file = event.target.files[0]; 

  if (file) {   
    new Promise(function(resolve, reject) {      
      var reader = new FileReader();      
      reader.onload = function (evt) {      
      resolve(evt.target.result);      
      };     

      reader.readAsText(file);     
      reader.onerror = reject;   
     })    

     .then(findLongestWord)   
     .catch(function(err) {     
       console.log(err)
     });  
   }
 }

document.getElementById('file').addEventListener('change', readFile, false);

function findLongestWord(data) {
...
这仍然给了我一个问题。在这种情况下,阅读文件以便正确处理内容的最佳方式是什么

编辑:

编辑2:这是输入文本文件的示例:

cat
cats
catsdogcats
dog
dogcatsdog
hippopotamuses
rat
ratcatdogcat
catratdograt
dogcatscats

预期结果是:最长:ratcatdogcat,catratdograt…第二长:catsdogcats,dogcatscats…复合词数:5

\w
匹配基本拉丁字母表中的任何字母数字字符, 包括下划线

x+
与前面的项匹配了x 1次或更多次


您对
javascript
和链接的JSFIDLE有什么问题?@guest271314问题是我希望能够通过
readFile(event)
读取外部文本文件数据,但当我这样实现时,
addPrefix
findprefix
之间不会共享'current.word'object.key。所以函数不起作用。“'current.word'object.key不能在addPrefix和findprefix之间共享”应该首先调用哪个函数?应该调用的第一个函数的预期结果值和传递给第二个函数的预期参数是什么?第二个函数的预期返回值是多少?首先调用@guest271314 findPrefix,然后调用addPrefix。当前如何设置,如“word”已传递。该函数将对象堆叠在其他对象的内部,并且只有最后一个对象具有属性“word”。例如:如果您的文本文件中只有“word”,那么您的
current
变量将如下:{“w”:{“o”:{“r”:{“d”:{“word”:true}。这意味着
current.word
只有在单词末尾才是真的。这样我们就可以把“单词”放入
found
数组中。@guest271314 how man。我说不出话来。我对你感激不尽。我怎样才能给你的不仅仅是+1声誉?谢谢你陪我一个多小时。它起作用了。不知道正则表达式在这里做什么,哈哈
cat
cats
catsdogcats
dog
dogcatsdog
hippopotamuses
rat
ratcatdogcat
catratdograt
dogcatscats
var list = data.match(/\w+/g);