Я думаю, что рекурсия работает правильно, но я не могу установить правильное значение свойства первоначально запрошенного элемента.
Цель здесь - найти самого верхнего родителя (или "предка")., «глубина = 0» вложенного элемента (таксономия, основанная на атрибутах «родителя» словаря), и соответственно назначьте этому первоначально запрошенному свойству «предка» вложенного элемента.
Например, в
Яблоки
- Красный
- - Империя
- - - Fresh
Предок "Fresh" должен быть установлен в "Яблоки".
Пока япытаясь сделать это «по требованию» и индивидуально, я открыт для решения, которое помечает всех детей, связанных с одним и тем же предком, одним махом или для утверждения, поскольку это, вероятно, будет более эффективным.
ЗАПРОС
for (var mc:Object in taxonomy) {
var term = taxonomy[mc];
term["ancestor"] = getAncestor(term);
trace("Setting " + term.name + "'s ancestor as [" + term.ancestor + "]");
... }
FUNCTION
function getAncestor(term:Object):String {
var ancestor = "default";
for(var obj:Object in taxonomy) {
if(term.parent == taxonomy[obj].tid) { // If next object is current object's parent
if(taxonomy[obj].depth == 0) { // And if object's parent is a root object
// Then object's parent is the ancestor
trace(term.name + "'s parent IS the root (" + taxonomy[obj].name + "). DONE."); // "term" here is NOT originally requested term
return(taxonomy[obj].name); // Return DIRECTLY to function call and assign originally requested term with this name.
break; // Get the hell out of here
}
else { // If object's parent is not a root object
trace(term.name + "'s parent (" + taxonomy[obj].name + ") is NOT a root. LOOPING.");
getAncestor(taxonomy[obj]); // Step function again with current object's parent object as current object
}
}
}
return(ancestor);
}
Наконец, вот фрагмент трассируемого вывода, основанного на моих многочисленных отладкахзаявления:
родитель лечения (Еда Дисортировщики) это не рут.LOOPING.
Родитель расстройства пищевого поведения (психосоматический) НЕ является корнем.ПЕТЛЯ.
Родитель психосоматика (Болезнь / Болезнь) НЕ является корнем.LOOPING.
Родитель Болезни / Болезни (Личный) НЕ является корнем.LOOPING.
Родитель Personal (Здоровье) НЕ является пользователем root.LOOPING.
Родителем здоровья является корень (Люди).СОВЕРШЕНО.
Установка предка обработки как [по умолчанию]
Как вы можете видеть, хотя рекурсия не находит корень, первоначально запрошенный элемент по-прежнему получает значение по умолчанию.Чего мне не хватает?