javascript - 被 3 层嵌套数组弄糊涂了
我正在处理从保存在 SharePoint 文档库中的 Excel 文件中提取数据。我正在获取行,但对数据结构感到困惑。我对 TypeScript/JavaScript 还比较新。
我正在获取这些行:
private _getRows(documentLibraryID: string, documentID: string, worksheet: string, table: string): Promise<[MicrosoftGraph.WorkbookTableRow]> {
return new Promise<any>((resolve, reject) => {
this.props.context.msGraphClientFactory
.getClient()
.then((client: MSGraphClient): void => {
client
.api(`/sites/${URL}/drives/${documentLibraryID}/items/${documentID}/workbook/worksheets('${worksheet}')/Tables('${table}')/rows`)
.get((error, response: any, rawResponse?: any) => {
if (response) {
let rows:[MicrosoftGraph.WorkbookTableRow] = response.value;
resolve(rows);
}
else {
reject(error);
}
});
});
});
}
我得到的结果:
我尝试枚举数组:
for (let row of rows) {
console.log("row: ", row);
for (let value of row.values) {
console.log("value: ", value);
for (let newValue of value.values) {
console.log("newValue: ", newValue);
}
}
}
但是我无法访问 newValue 对象:
我对这个结构哪里不理解?它看起来像三个嵌套的数组。
答案#1
问题是,当你达到这一点时:for (let value of row.values),value 确实是一个数组。所以不需要做 value.values。
这段代码应该可以正常工作:
for (let row of rows) {
console.log("row: ", row);
for (let valueArr of row.values) {
console.log("value: ", valueArr);
for (let newValue of valueArr) {
console.log("newValue: ", newValue);
}
}
}
希望这能帮到你!

