Как я могу проникнуть внутрь каждого объекта в структуре вложенных объектов?

#javascript

#javascript

Вопрос:

У меня есть объект obj1 с другим объектом внутри obj2 .

obj2 структурирован таким же образом, obj1 что внутри него будет другой объект.

Допустим, у меня их 20, и я пытаюсь проникнуть внутрь каждого из них, чтобы получить некоторые данные.

Есть ли способ создать цикл, который попадает внутрь объекта, как только он его видит?

Я пытался сделать это, но безуспешно.

 var location;
for (var [key, value] of Object.entries(object)) {
  var type = typeof value;
  var array = Array.isArray(value);
  if (typeof value === "object" amp;amp; array === false amp;amp; value) {
    location = key;
    for (var [a, b] of Object.entries(object[location])) {
      /*this is where I'm stuck, the location variable doesn't update with
      the 'path' of every object*/
    }
  }
}
  

Комментарии:

1. Каков ваш ожидаемый результат? Чего вы хотите добиться этим? Может быть, есть более простой способ сделать это.

2. Согласен с Вишнудевом, чтобы помочь вам, нам действительно нужно увидеть, как выглядит исходный объект и что вы пытаетесь получить от него. На первый взгляд кажется, что вам нужна рекурсивная функция, предложенная Бюлентом, но более подробная информация поможет нам быть более точными и информативными

3.Ожидаемым результатом было бы напечатать на HTML-странице объекты, используя ul li список, поэтому я не знал, как получить доступ ко всем объектам и как поместить их в список, предоставив им какой-то отступ. js <ul> <li>obj1</li> <ul> <li>obj2</li> <ul> <li>obj3</li> </ul> </ul> </ul>; Я выполнил первую часть, и теперь я не знаю, как сделать отступ в списке: c

Ответ №1:

Создайте функцию, которая выполняет цикл на одном уровне. Проверьте значения для объектов. Если вы его найдете, вызовите ту же функцию.

 function createLoop(obj) {
  for (const key in obj) {
     if (typeof obj[key] == "object") {
        createLoop(obj[key])
     } else {
       // do your stuff
     }
  }
}