Как сделать нужную структуру из объекта
У меня есть объект
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 в рекурсию дальше бросать |
Часовой пояс GMT +3, время: 07:52. |