Имею такой код.
const A = [
{ category: "Walls", id: "1", symbol: "Wall-Ext_102", family: "Basic Walls" },
{ category: "Walls", id: "2", symbol: "Wall-Ext_102", family: "Basic Walls" }
];
const B = [
{ category: "Window", id: "3", symbol: "Window-Ext_102", family: "Basic Window" },
{ category: "Walls", id: "4", symbol: "Wall-Other-102", family: "Other Walls" }
];
const C = [
{ category: "Walls", id: "5", symbol: "Wall-Ext_102", family: "Basic Walls" },
{ category: "Floor", id: "6", symbol: "Floor-Ext_102", family: "Basic Floor" }
];
const D = [
{ category: "Walls", id: "5", symbol: "Wall-Ext_102", family: "Basic Walls" },
{ category: "Walls", id: "6", symbol: "Wall-Ext_102", family: "Basic Walls" }
];
const data = [...A, ...B, ...C, ...D];
const result = [];
const map = new Map();
for (const item of data) {
if (!map.has(item.category)) {
map.set(item.category);
result.push([
{
category: item.category,
family: item.family,
symbol: item.symbol,
}
]);
}
}
Он создаёт объект с содержанием уникальных имён категорий. Мне нужно исправить её таким образом, чтобы в полученных уникальных категорий так же содержались уникальные family. Сейчас я могу получить только одно family, но я не могу получить так же family с названием "Other Walls". Таким же образом в каждой family мне нужно получить symbol.
В итоге должен получиться такой объект:
let obj = {
category: {
Walls: {
family: {
'Basic Walls': {
symbol: {
'Wall-Ext_102': {
id: { 0: 1, 1: 2 },
},
},
},
'Other Walls': {
symbol: {
'Wall-Other-102': {
id: { 0: 4 }
}
}
}
},
},
Window: {
family: {
'Basic Window': {
symbol: {
'Window-Ext-102': {
id: { 0: 3, }
}
}
}
}
},
Floor: {
family: {
'Basic Floor': {
symbol: {
'Floor-Ext_102': {
id: { 0: 6, }
}
}
}
}
}
}
}