#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
}
}
}