我试图访问数组中数组中的各个值,我拥有一个整体数组,该数组中包含数组,然后在其中,我希望能够访问这些值。
我可能还会将每个值分配给变量。
本质上,我试图使用JS遍历将成为值网格(数组中的数组)的东西。
1)我尝试通过将行值作为JSON字符串推入数组,然后将其映射为array.map => row.map,然后将其映射为单个元素来访问值
2)我已经尝试过“解构”对象,但似乎也没有去任何地方。
async function dataFormat(worksheet, rowNumber) {
csvWorkbook = workbook.csv.readFile("./uploads/uploadedFile.csv");
await csvWorkbook.then(async function(result) {
let restarts = 0;
let nullCounts = true;
let thermostatRows = [];
// you have to define THEN destructure the array
// const [serial,date,startDate,endDate,thing3,thing4,thing5] = firstTemps
worksheet.eachRow({ includeEmpty: true }, function(row, rowNumber) {
if (rowNumber > 6) {
Rows.push(`${JSON.stringify(row.values)}`);
}
});
console.log(thermostatRows[0])
})
};
这是我的函数,返回第一行。如果我将Rows [0] [0]放进去,我会收到一封信。
这是Rows [1]的返回
[null,"2018-12 03T05:00:00.000Z","16:35:00","heat","heatOff", "hold","Home",70.1,70.1,69.8,43,33.8,0,0,15,15,null,69.8,43,1]
这是有意义的,因为它是第一行。
但是记录Rows [0] [0]会给我空值的第一个字母(数组中的第一个值)
最后,
[ '[null,"2018-12-02T05:00:00.000Z","23:25:00","heat","heatOff","auto","Home",72,72,72,47,41.3,0,0,0,0,null,72,47,0]',
'[null,"2018-12-03T05:00:00.000Z","16:35:00","heat","heatOff","hold","Home",70.1,70.1,69.8,43,33.8,0,0,15,15,null,69.8,43,1]',
'[null,"2018-12 03T05:00:00.000Z","16:40:00",null,null,null,null,null,null,null,null,33.8,0]'
如果我不另外记录行,就是大约的对数-让您了解整个情况。
edit:我的函数现在看起来像这样,为什么它返回未定义?
if (rowNumber > 6) {
thermostatRows.push((row.values));
}
});
thermostatRows.map(thermostatRow => {
// let [date,time,SystemSetting,systemMode,calendarEvent,ProgramMode,coolSetTemp,HeatSetTemp,currentTemp,currentHumidity,outdoorTemp,windSpeed,coolStage1,HeatStage1,Fan,DMOffset,thermostatTemperature,thermostatHumidity,thermostatMotion] = thermostatSettings
console.log(date,time,SystemSetting)
})
})
};```
FINAL UPDATE
It works I figured out the undefined deal myself- try this. (this is with the excel.js library)
async function dataFormat(worksheet, rowNumber) {
csvWorkbook = workbook.csv.readFile("./uploads/uploadedFile.csv");
await csvWorkbook.then(async function(result) {
let restarts = 0;
let nullCounts = true;
let thermostatRows = [];
let thermostatSettings = []; // you have to define THEN destructure the array
// const [serial,date,startDate,endDate,thing3,thing4,thing5] = firstTemps
worksheet.eachRow({ includeEmpty: true }, function(row, rowNumber) {
if (rowNumber > 6) {
thermostatRows.push((row.values));
}
});
thermostatRows.map(thermostatRow => { [,date,time,SystemSetting,systemMode,calendarEvent,ProgramMode,coolSetTemp,HeatSetTemp,currentTemp,currentHumidity,outdoorTemp,windSpeed,coolStage1,HeatStage1,Fan,DMOffset,thermostatTemperature,thermostatHumidity,thermostatMotion] = thermostatRow
console.log(date,time,SystemSetting)
})
})
};
答案 0 :(得分:0)
首先,您需要了解Javascript数组是零索引的。这意味着要获取第一个项目,请使用索引0。调用Rows [1]时,实际上就是第二个项目。
第二,您不是在创建二维数组,而是在创建一维字符串数组。
Rows.push(`${JSON.stringify(row.values)}`);
这需要row.values
并将其转换为字符串,将其插值为另一个字符串,然后将最终结果压入数组。
如果要在第一个数组(我假设row.values包含)中包含一个数组,请执行Rows.push(row.values);