Я хочу преобразовать данные из дерева объектов в массив объектов такого типа
Я не могу сделать, если вы можете дать мне алгоритм или решение этой проблемы. Любая мысль, которую вы можете ухватить. Мой мозг отказывается работать.
от:
const input = {
p1: {
s1: {
title: 'scene 1',
description: 'description 1',
value: 1,
},
s2: {
title: 'scene 2',
description: 'description 2',
value: 32,
},
s3: {
title: 'scene 3',
description: 'description 3',
value: 89,
},
s4: {
title: 'scene 3',
description: 'description 3',
value: 0,
},
},
p2: {
s5: {
title: 'scene 5',
description: 'description 5',
value: 0,
},
s6: {
title: 'scene 6',
description: 'description 6',
value: 42,
},
s7: {
title: 'scene 7',
description: 'description 7',
value: -9,
},
},
}
до:
[
{ projectId: 'p1', sceneId: 's1', value: 1, title: 'scene 1' },
{ projectId: 'p1', sceneId: 's2', value: 32, title: 'scene 2' },
{ projectId: 'p1', sceneId: 's3', value: 89, title: 'scene 3' },
{ projectId: 'p2', sceneId: 's6', value: 42, title: 'scene 6' },
]
Я пытался сделать это с Object.entries и Array.reduce с рекурсивной функцией, но я не могу сделать это два дня ...: D
это мои попытки
const recursive = (obj, lvl = 0) => {
if (typeof obj !== 'object') {
}
const value = Object.entries(obj);
return value.reduce((acc, [key, value]) => {
if (typeof value !== 'object') {
return {...acc, [key]: value};
}
if (lvl === 0) {
return {...recursive(value, lvl + 1), sceneId: key };
}
}, {})
}
const transform = (data) => {
const a = Object.entries(data);
return a.reduce((acc, [key, value]) => {
return [...acc, recursive(value)];
}, [])
}
console.log(transform(input))
Пожалуйста, помогите.