就像圖中所示,展開時可以看到值,但是值其實不在物件中
#
if (typeof require !== 'undefined') var XLSX = require('xlsx');
function to_json(workbook) {
var result = {};
workbook.SheetNames.forEach(function(sheetName) {
var roa = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
if (roa.length > 0) {
result[sheetName] = roa;
}
});
return result;
}
export function handleFile(e) {
var files = e.target.files;
var i, f;
var testTest = {};
for (i = 0; i != files.length; ++i) {
f = files[i];
var reader = new FileReader();
var name = f.name;
reader.onload = function(e) {
var data = e.target.result;
var workbook;
/* if binary string, read with type 'binary' */
workbook = XLSX.read(data, {
type: 'binary'
});
let excelData = to_json(workbook);
testTest.data = excelData;
};
reader.readAsBinaryString(f);
}
console.log(testTest)
return testTest
}
chrome的console列印物件的時候,查看值是點擊展開時再詳細取得的,整個流程:
空物件聲明
執行console,chrome印刷對象,傳遞的是對象的引用
FileReader完成,賦值data給物件
你在console中,點選展開值,透過物件引用,取得到物件的詳細值
你可以看到截圖
Object {} [i]
这里有个[i]
的圖標,有對應的物件console說明:value below was evaluated just now
問題在於,你的
reader.onload
是在啥時候運行的。另外,我還是搞不明白,為什麼不直接複製貼上程式碼? ? ?為什麼要截圖?