Мне нужна помощь. Я хочу перебрать вложенный объект массива, как показано на рисунке 1, и получить данные в array2D для сохранения данных в файл CSV, но я не очень понимаю, как зацикливать мои данные, чтобы детали становились массивом. Или у кого-то есть другие способы экспортировать данные в файл CSV с таким выводом.
Figure1:
var data = {
deviceA: {
smokeSensor: [
{
'190501': {
'0001': 200,
'0002': 300
},
},
{
'190502': {
'0001': 20,
'0002': 30
},
}
],
fireSensor: [
{
'190501': {
'0001': 700,
'0002': 750
},
},
{
'190502': {
'0001': 780,
'0002': 630
},
}
]
},
deviceB: {
smokeSensor: [
{
'190601': {
'0001': 100,
'0002': 110
},
},
{
'190602': {
'0001': 120,
'0002': 130
},
}
],
fireSensor: [
{
'190601': {
'0001': 600,
'0002': 522
},
}
]
},
};
Это вывод, который я хочу получить с помощью array2D, чтобы выбросить его в функцию конвертирования array2D в файл CSV.
const rows = [
["DeviceA"]
["Date/Time", "smokeSensor", "fireSensor"],
["190501 00:01", "200", "700"],
["190501 00:02", "300", "750"],
["190502 00:01", "20", "780"],
["190502 00:02", "30", "630"],
[""],
["DeviceB"],
["Date/Time", "smokeSensor", "fireSensor"],
["190501 00:01", "100", "600"],
["190501 00:02", "110", "522"],
["190502 00:01", "120", ""],
["190502 00:02", "130", ""],
];
Это мой код, который я пытался зациклить, но я довольно ошеломлен, однажды зацикливая каждый цикл, чтобы получить каждую деталь значения для даты и времени. К сожалению, я получил детали, которые были не такими, как хотелось бы.
var dataCSV = []
var mdbName = []
var header = ['DateTime']
var content = []
var dateTime = ''
for (var deviceId in data) {
mdbName.push(deviceId)
for (var sensorName in data[deviceId]) {
header.push(sensorName)
// console.log(data[deviceId][sensorName]);
Object.keys(data[deviceId][sensorName]).forEach(item => {
let date = data[deviceId][sensorName][item]
for (var key3 in date) {
// console.log(key3)
for (var key4 in date[key3]) {
dateTime = key3 + key4
// console.log(deviceId + ': ' + sensorName + ': ' + dateTime + ':' + date[key3][key4])
content.push(date[key3][key4])
}
}
})
}
}
dataCSV.push(mdbName)
dataCSV.push(header)
dataCSV.push(content)
console.log('End: ', dataCSV)
Это мой плохой вывод:
[
[ 'deviceA', 'deviceB' ],
[ 'DateTime', 'smokeSensor', 'fireSensor', 'smokeSensor', 'fireSensor' ],
[ 200, 300, 20, 30, 700, 750, 780, 630, 100, 110, 120, 130, 600, 522 ]
]