从对象创建完整的层次结构路径

Create full heirarchical path from objects

这是我的问题。我有名称为 属性 和 parentId 属性 的对象。我想做的是构建一个包含完整分层路径的字符串,类似于文件路径 (\grandparent\parent\child).

SomeObject:
  public var parentId:String;
  public var someObjectName:String;

我似乎想不出一种不会可怕地扩展或重做大量工作的方法。

当前想法:添加一个名为 getFullPathArray 的函数,如下所示

    getFullPath(parentIdHashMap:Map,returnArray:Array):Array
    {
         returnArray.addFirst(this.someObjectName);
         if( parentId != null )  
         {
             var parentSomeObject = parentIdHashMap[this.parentId]
             parentSomeObject(parentIdHashMap,returnArray)             
         }
         return returnArray
    }

这个函数的问题是每个 someObject 都会根据后代的数量被多次触及,这看起来很麻烦。

第二个想法:

为我的模型附加一个级别标识符。然后我可以按级别排序和分组并向下进行。我看到的问题是必须保持水平。这不是问题,这只是额外的逻辑,让我在稍后的线路上中断和软管。

我知道这个问题已在多个领域多次解决,但我似乎找不到与创建和维护数据结构无关的好方法。

非常感谢任何帮助。

也许你可以使用递归,像这样:

getFullPath(obj):String
    {      
         if( parentId != null )  
         {
             var path = getFullPath(parentIdHashMap[this.parentId]) + "/" + someObjectName;
             return path;             
         } else
         {
           return someObjectName;
          }
    }