I have an input:
var modbusData = [
{ Type: "rtu", IdDevice: "1", Time: "11:01:00", Data: "1,12,23" },
{ Type: "tcp", IdDevice: "2", Time: "11:01:11", Data: "30,40,50" },
{ Type: "rtu", IdDevice: "1", Time: "11:02:00", Data: "5,10,21" },
{ Type: "tcp", IdDevice: "2", Time: "11:02:11", Data: "32,44,53" },
];
After I call:
function groupBy(objectArray, property) {
return objectArray.reduce(function (acc, obj) {
let key = obj[property]
if (!acc[key]) {
acc[key] = []
}
acc[key].push(obj)
return acc
}, {})
}
let groupedData = groupBy(modbusData, 'Type')
console.log(groupedData)
The result will be:
{
rtu: [
{ Type: 'rtu', IdDevice: '1', Time: '11:01:00', Data: '1,12,23' },
{ Type: 'rtu', IdDevice: '1', Time: '11:02:00', Data: '5,10,21' }
],
tcp: [
{ Type: 'tcp', IdDevice: '2', Time: '11:01:11', Data: '30,40,50' },
{ Type: 'tcp', IdDevice: '2', Time: '11:02:11', Data: '32,44,53' }
]
}
And now I want when there is no "Type" : "rtu" or "tcp" in the modbusData, the result will return an empty array like this:
{
rtu: [
{ Type: 'rtu', IdDevice: '1', Time: '11:01:00', Data: '1,12,23' },
{ Type: 'rtu', IdDevice: '1', Time: '11:02:00', Data: '5,10,21' }
],
tcp: []
}