У меня есть объект
let object = {
name: 'color',
values: [
{
id: 'color-red',
value: 'red'
},
{
id: 'color-blue',
value: 'blue'
}
],
labels: {
one: 'one label',
two: 'two label'
}
};
Из данного объекта хочу сделать вот
let array = [
{
id: 0,
_key: 'name',
_value: 'color',
type: 'string',
childIds: [
],
},
{
id: 1,
_key: 'values',
_value: false,
type: 'array',
childIds: [
2,
3
],
},
{
id: 2,
_key: false,
_value: false,
type: 'object',
childIds: [
4,
5
],
},
{
id: 3,
_key: false,
_value: false,
type: 'object',
childIds: [
6,
7
],
},
{
id: 4,
_key: 'id',
_value: 'color-red',
type: 'string',
childIds: [
],
},
{
id: 5,
_key: 'value',
_value: 'red',
type: 'string',
childIds: [
],
},
{
id: 8,
_key: 'labels',
_value: false,
type: object,
childIds: [
9,
10
],
},
{
id: 9,
_key: 'one',
_value: 'one-label',
type: 'string',
childIds: [
],
},
{
id: 10,
_key: 'two',
_value: 'two-label',
type: 'string',
childIds: [
],
}
];
Смысл в том что вложенность может быть любая
Сам начал делать вот так
this.renderTree(object, []);
renderTree(object, array) {
array = Object.keys(object).map(key => {
if(typeof object[key] == 'object') {
if(object[key].length == 'undefined') {
//array
return this.renderTree(object[key], array);
} else {
// object
return this.renderTree(object[key],array);
}
} else {
return array.push = {
id: array.length,
_key: key,
_value: object[key],
type: 'string',
childIds: [],
}
}
});
console.log(array);
}
но у меня проблема в том что array не сохраняется в конце, т.е я получаю массив по элементу одному. не понимаю как сделать чтобы array в рекурсию дальше бросать