【发布时间】:2026-02-15 04:55:02
【问题描述】:
来源是一个excel文件。我解析并遍历了分配标题的列。到目前为止,这工作正常。但是我似乎无法在 for 循环之外访问这些数据,因为它每次都显示为“未定义”。
我正在使用 xls 包,这是在 javascript 中。
由于某种敏感信息,更改了变量名称以发布代码。让我知道是否有任何方法可以更好地澄清。谢谢!
let data = []
for (let fname of fileList) {
if (file_count > 1) {
continue
} else {
}
let excelFile =
XLSX.readFile(`FILE.xlsm`,
{
cellDates: true,
});
log('FILENAME', fname)
let sheet_name;
for (let sheet in excelFile.Sheets) {
sheet_name = sheet
log('SHEET NAME', sheet)
}
let array = XLSX.utils.sheet_to_json(excelFile.Sheets[sheet_name],
{
header:
['HEADER_1',
'HEADER_2',
'HEADER_3']
} );
log('array', array[0].HEADER_1)
for(let i = 0; i<array.length; i++){
let data = {
Obj_1: array[i].HEADER_1,
Obj_2: array[i].HEADER_2,
Obj_3: [i].HEADER_3
}
}
}
【问题讨论】:
-
let data定义了一个块范围变量,它不存在于循环之外。那么为什么你期望你可以在循环之外访问它呢? -
抱歉!我确实在这里将“let data = []”声明为循环之外的空数组:let data = [] for (let fname of fileList) { if (file_count > 1) { continue } else { } let excelFile =跨度>
-
但是你在循环中有一个
let data。这是一个完全不同的变量(即使它具有相同的名称)。而循环中的let data只存在于循环内。 -
有没有办法可以使用 .push 在外面使用它?
-
您的代码不会向
let data = []中的数组添加任何内容。此外,在所示代码的情况下,它不是undefined,而是一个空数组。在您的声明中,it comes up as "undefined" every time.与显示的代码相矛盾。创建一个minimal reproducible example,其中代码与您的问题描述相匹配。
标签: javascript for-loop