#javascript
#язык JavaScript
Вопрос:
как я могу получить значения вложенного объекта в цикле? Мне нужно пройти через оба уровня:
for (let unit in ds1.units) { for (let ports in ds1.units[unit].switchPorts) { console.log(ports) } }
}
Объект выглядит так: На экране нет вывода. Когда я получаю доступ к значению с ds1.units[unit].switchPorts
помощью, я его получаю. Также я получаю unit
после первого цикла for.
Комментарии:
1. Опубликуйте объект ввода в виде фактического кода (рисунок бесполезен) и опубликуйте то, что вы ожидаете, и то, что вы на самом деле получаете.
Ответ №1:
Вы не можете повторять объект по умолчанию.
Следовательно, существует несколько способов, но я предпочитаю конвертировать ключ в массив. Таким образом, код будет:
for (let unit of Object.keys(ds1.units)) { console.log(ds1.units[unit].switchPorts) }
Также мы собираемся использовать of
вместо in
«потому of
что», чтобы получить значение вместо индекса.
Для тестового случая:
ds1 = { units: { 1: { switchPorts: 5, }, 2: { switchPorts: 6, } } } for (let unit of Object.keys(ds1.units)) { console.log(ds1.units[unit].switchPorts) }
Комментарии:
1. Это приводит к исключению: Неперехваченная ошибка типа: Не удается прочитать свойства неопределенного (чтение «переключаемых портов»).
2. Вы уверены, что передаете тот же объект, что и снимок экрана? Это работает на моей стороне. запустите код тестового примера, который я предоставил
3. Я подозреваю, что вы получаете это с сервера? и вы пытаетесь получить доступ еще до получения данных? потому что это никоим образом не определено, если переменная не определена изначально
4. Извините, что я допустил опечатку в функции. Ваш код работает совершенно нормально. Спасибо за объяснение и код!