active_dl: {
"Машины и оборудование прочие, не включенные в другие группировки": 1,
"Насосное оборудование, комлектующие, сопутствующие": 1,
"Электродвигатели, генераторы и трансформаторы силовые": 1,
"Средства транспортные прочие, не включенные в другие группировки": 1
},
inactive_dl: {
"Машины и оборудование прочие, не включенные в другие группировки": 2,
"Насосное оборудование, комлектующие, сопутствующие": 2,
"Электродвигатели, генераторы и трансформаторы силовые": 2
}
all_dl: {
"Машины и оборудование прочие, не включенные в другие группировки": {"active":1, "inactive":2},
"Насосное оборудование, комлектующие, сопутствующие": {"active":1, "inactive":2},
"Электродвигатели, генераторы и трансформаторы силовые": {"active":1, "inactive":2},
"Средства транспортные прочие, не включенные в другие группировки": {"active":1, "inactive":0}
}
const keys = new Set(
Object.values(data)
.map((entry) => Object.keys(entry))
.flat()
);
const properties = Object.keys(data).map((key) => [
key.split("_").shift(),
key,
]);
const result = [...keys].reduce((acc, key) => {
acc[key] = Object.fromEntries(
properties.map(([property, type]) => [property, data[type][key] ?? 0])
);
return acc;
}, {});
const mappedData = Object.entries(data).reduce((acc, [type, entry]) => {
const property = type.split('_').shift();
for (const key in entry) {
acc[key] = { ...acc[key], [property]: entry[key] };
}
return acc;
}, {});
console.log(mappedData);
/*
{
"Машины и оборудование прочие, не включенные в другие группировки": {
"active": 1,
"inactive": 2
},
"Насосное оборудование, комлектующие, сопутствующие": {
"active": 1,
"inactive": 2
},
"Электродвигатели, генераторы и трансформаторы силовые": {
"active": 1,
"inactive": 2
},
"Средства транспортные прочие, не включенные в другие группировки": {
"active": 1
}
}
*/
const result = {};
const propertyMap = Object.fromEntries(Object.keys(data).map((key) => [key.split('_').shift(), key]));
for (const property in propertyMap) {
for (const key in data[propertyMap[property]]) {
result[key] ??= {};
result[key][property] = data[propertyMap[property]][key];
}
}
for (const key in result) {
for (const property in propertyMap) {
if (property in result[key] === false) {
result[key][property] = null;
}
}
}
console.log(result);
/*
{
"Машины и оборудование прочие, не включенные в другие группировки": {
"active": 1,
"inactive": 2
},
"Насосное оборудование, комлектующие, сопутствующие": {
"active": 1,
"inactive": 2
},
"Электродвигатели, генераторы и трансформаторы силовые": {
"active": 1,
"inactive": 2
},
"Средства транспортные прочие, не включенные в другие группировки": {
"active": 1,
"inactive": null
}
}
*/