Я изучаю рекурсию в Javascript, и вот что я получил до сих пор.Эта функция проходит по дереву и находит объект с подходящим именем.Поскольку начало должно быть задано как корень, я создал рекурсию для использования корня в качестве начальной точки.
Первый оператор if в цикле for на полпути должен возвращать совпадение.Я отладил части этого в консоли, поэтому я знаю, что возврат не работает по какой-то причине, о которой я не знаю (любое понимание было бы здорово для целей обучения!).
Журналы set consoleкак я и ожидаю, логическая проверка показывает, что совпадение действительно происходит, но в конце все равно становится неопределенным!
findInTree(name) {
let start = this.first(); //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
} else {
findName(set, name);
}
}
}
}
return findName(start, name);
}
// returns undefined...