Показать сообщение отдельно
  #4 (permalink)  
Старый 11.12.2020, 08:45
Кандидат Javascript-наук
Отправить личное сообщение для dpts Посмотреть профиль Найти все сообщения от dpts
 
Регистрация: 12.05.2015
Сообщений: 111

Сообщение от voraa Посмотреть сообщение
Тут вопросы возникают по функции setActive
Что она возвращает? Если переданный source, то что означает

011 item = setActive(str,item.children);


Логичнее возвращать найденный item (null, если не найдено)

Второй вопрос. Кто устанавливает active:false для всего дерева в промежутках между поисками?
Должна ли эта функция делать это? Т.е не только устанавливать active:true для найденного и его предков, но и active:false для всех остальных?

Ну и еще замечание. При работе с деревьями лучше считать корень дерева обычным узлом. те должно быть так

tree = {
id:0,
active: false,
link: '',
children: [ // .... то, что сейчас у вас tree
]
}
1. Функция возвращает source в котором active:true искомый элемент.
2. В промежутках между поисками никто никому ничего не устанавливает
3. Не обязательно, это можно вынести в отдельную функцию, которая перед поиском будет все сбрасывать в active:false.
Ответить с цитированием