向数组中添加数据并在函数外访问数组内的数据Javascript

Adding data to an array and accessing the data inside the array outside the function Javascript

我是 Javascript 的新手,我不了解如何将数据保存在数组中。在我的函数中,我逐行读取文件并将其保存在数组中。我认为因为数组是在函数外部声明的,所以数据将保留在其中,但事实并非如此。我想了解在函数外打印数组的值时数据仍然存在怎么办。

我的代码:

const fs = require('fs');
const readline = require('readline');
  
var array = [];


async function processLineByLine() {
  const fileStream = fs.createReadStream('data.txt');

  const rl = readline.createInterface({
    input: fileStream,
    crlfDelay: Infinity,
  });

  for await (const line of rl) {
    
      array.push(line);
    }
 

  //console.log(array.toString());
}

processLineByLine();
console.log(array.toString());

预期的输出将是数组中的数据:

288355555123888,335333555584333,223343555124001,002111555874555,111188555654777,111333555123333

因为 processLineByLine 是一个异步函数,所以 console.log 在异步填充数组之前运行。

异步功能完成后需要登录,如下图:

processLineByLine().then(() => console.log(array.toString()));

此外,您不需要在函数外部声明 array,您可以将它移到函数内部并从那里 return 并将其作为参数传递给 .then回调,如下图:

const fs = require("fs");
const readline = require("readline");

async function processLineByLine() {
  const array = [];
  const fileStream = fs.createReadStream("data.txt");

  const rl = readline.createInterface({
    input: fileStream,
    crlfDelay: Infinity,
  });

  for await (const line of rl) {
    array.push(line);
  }

  return array;
}

processLineByLine().then((array) => console.log(array.toString()));

你不会得到,因为它是异步调用。试试下面的片段

const fs = require('fs');
const readline = require('readline');

var array = [];

async function processLineByLine() {
    const fileStream = fs.createReadStream('data.txt');
    const rl = readline.createInterface({
        input: fileStream,
        crlfDelay: Infinity,
    });

    for await (const line of rl) {  
        array.push(line);
    }
}

processLineByLine().then(()=>{
    console.log(array);
});

如果 data.txt 的每一行都像 288355555123888、335333555584333、223343555124001,... 并且想要提取这些数字吐出每一行然后将其添加到数组中。

for await (const line of rl) {  
    array=[...array, ...line.split(',')];
}