Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS FOR LOOP (for nested obj) (https://javascript.ru/forum/misc/74231-js-loop-nested-obj.html)

VyacheslavBozere 23.06.2018 18:24

JS FOR LOOP (for nested obj)
 
Всех приветствую. Подскажите пож-та, как работает данный цикл for?
Что значит node.rest ?

let list = {
  value: 1,
  rest: {
    value: 2,
    rest: {
      value: 3,
      rest: null
    }
  }
};
for (let node = list; node; node = node.rest) {
console.log(node);
}
/*
{
value:	1
rest:	{
value:	2
rest:	{value: 3, rest: null}
}
}
{value: 2, rest: {value: 3, rest: null}}
{value: 3, rest: null}

*/

Rise 23.06.2018 18:31

А что в консоли пусто? :blink:

VyacheslavBozere 23.06.2018 18:34

Не знаю. Я коммент добавил как должно выводить. У меня выводит

рони 23.06.2018 18:36

VyacheslavBozere,
строка 11 первый такт: let node = list мы в строке 1
строка 11 второй такт: node = node.rest мы в строке 3
строка 11 третий такт: node = node.rest мы в строке 5
строка 11 четвёртый такт: node = node.rest мы в строке 7
строка 11 пятый такт: for (let node = list; node; node = node.rest) node равен null мы в строке 14.
... может кто-то обьяснит иначе

VyacheslavBozere 23.06.2018 18:39

Все понял. Очень грамотно объяснили. Спасибо большое. Еще вопрос, а на практике стоит такое применять ? Или проще for in для obj использовать ?

рони 23.06.2018 18:43

Цитата:

Сообщение от VyacheslavBozere
Еще вопрос, а на практике стоит такое применять ?

для данного случая да.

Rise 23.06.2018 18:43

VyacheslavBozere,
ну вот, каждый node.rest хранит ссылку на объект, который тоже хранит и тд, односвязный список, а вот двусвязный список.

Alexandroppolus 23.06.2018 19:12

Цитата:

Сообщение от VyacheslavBozere (Сообщение 488147)
Все понял. Очень грамотно объяснили. Спасибо большое. Еще вопрос, а на практике стоит такое применять ? Или проще for in для obj использовать ?

for in здесь никаким боком.
А так, юзать можно, только список может быть замкнут, если последний элемент смотрит на кого-то из предыдущих или даже на себя, тогда будет бесконечный цикл.

xShift 23.06.2018 19:47

Забавное извращение :) Новый while true головного мозга ?


Часовой пояс GMT +3, время: 06:19.