使用 FileReader.readAsText() 将 .txt 文件拆分为 JavaScript 数组

Splitting a .txt file into a JavaScript Array using FileReader.readAsText()

我使用 FileReader.readAsText() 导入文件并将其导入我的数组,但它创建了一个新数组,最终推入了我现有数组的第一个位置。当我尝试索引该数组时,它显然是“未定义的”,即使我可以清楚地看到 console.log 命令中的值。我的测试 .txt 文件读取

aaa
bbb
ccc
ddd
eee
ddd
eee
eee

我想读取文件并通过拆分每一行将其存储到一个数组中 '''

        var guestList = []
        document.getElementById('inputfile') 
        .addEventListener('change', function loadFile() { 
          
        var fr=new FileReader(); 
        fr.onload=function(){ 
          guestList.push(fr.result.split('\n')); 
          
        } 
        console.log(guestList)
          
        fr.readAsText(this.files[0]);
    }) 
    console.log(guestList)

''' 这是我的控制台的样子: [] 0: (9) ["aaa", "bbb", "ccc", "ddd", "eee", "ddd", "eee", "eee", ""] 长度:1 原型:数组(0)

您只是将单个项目推送到 guestList - 拆分文件的结果。相反,只需使用 .split 的结果,而不是将其包围在另一个数组中 - 并确保将结果记录在 内部 回调中,而不是外部。

此外,为了多系统兼容性,一些环境使用换行符和换行符。考虑改用正则表达式,以选择性地匹配换行符后跟换行符:

document.getElementById('inputfile').addEventListener('change', () => {
  const fr = new FileReader();
  fr.onload = () => {
    const guestList = fr.result.split(/\r?\n/);
    console.log(guestList);
  };
  fr.readAsText(this.files[0]);
});