向数组中添加数据并在函数外访问数组内的数据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(',')];
}
我是 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(',')];
}