AntonBrock
@AntonBrock
screen light

Как правильно сделать рекурсию при большой вложенности из объектов?

Проблема:
Иногда может придти большое кол. данных, а может и дальше уходить в объекты, не понимаю как правильно разобрать их рекурсией:
"extra_data":{
    "city": {"type":"г","value":"Самара","fias_id":"bb035cc3-1dc2-4627-9d25-a1bf2d4b936b","full_type":"город","value_with_type":"г Самара"},
    "region": {"code":"63","type":"обл","value":"Самарская","fias_id":"df3d7359-afa9-4aaa-8ff9-197e73906b1c","full_type":"область","value_with_type":"Самарская обл"}
}


Стек:
vue.js

Мой код, который мне выдает по 2 раза, и дальше 1 свойства не идет.
Использую в methods
setExtraFields() {
      let a = []
      _.forEach(this.lead.extra_data, (val, key) => {
          getProp(this.lead.extra_data)
      })

      function getProp(o) {
        for(var prop in o) {
          if(typeof(o[prop]) === 'object') {
            getProp(o[prop])
          } else {
            let rusTitle = cyrillicToTranslit().reverse(prop)
            let obj = {"title": rusTitle, "value": o[prop]}
            // тут хочу закинуть в массив объекты, который потом буду использовать с v-for
            return a.push(obj)
          }
        }
      }
      console.log(a)
    }

<b>console</b>
0: {title: "тыпе", value: "г"}
1: {title: "cоде", value: "63"}
2: {title: "тыпе", value: "г"}
3: {title: "cоде", value: "63"}
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
AntonBrock
@AntonBrock Автор вопроса
screen light
Вот рабочая функция, которая перебирает объекты и правильно их складывает в один массив:
let a = []
getProp(this.n)
   function getProp(data) {
     let obj = {}
       _.forEach(data, (val, key) => {
          if (_.isObject(val)) {
             getProp(val);
          } else {
              a.push({"title": key, "value": val})
        }
      })
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы