从对象创建完整的层次结构路径
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;
}
}
这是我的问题。我有名称为 属性 和 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;
}
}