gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/treex/treex-list.go (about)

     1  package treex
     2  
     3  import "gitee.com/zhongguo168a/gocodes/datax"
     4  
     5  type TreeListItem struct {
     6  	/**
     7  	 * 编号
     8  	 */
     9  	Id string
    10  	/**
    11  	 * 父编号
    12  	 */
    13  	Parent string
    14  
    15  	/**
    16  	 * 自定义数据
    17  	 */
    18  	Data interface{}
    19  }
    20  
    21  func NewByList(arr []*TreeListItem) *TreeRoot {
    22  	nodes := datax.M{
    23  		"/": nil,
    24  	}
    25  	var root *TreeRoot
    26  	for _, val := range arr {
    27  		node := &TreeNode{Id: val.Id}
    28  		nodes[val.Id] = node
    29  		node.Data = val.Data
    30  	}
    31  	root = NewTreeRoot()
    32  	if nodes["/"] == nil {
    33  		nodes["/"] = root
    34  	} else {
    35  		a := nodes["/"].(*TreeNode)
    36  		root.TreeNode = *a
    37  		nodes["/"] = root
    38  	}
    39  	for _, val := range arr {
    40  		node := nodes[val.Id]
    41  		iparent, hasParent := nodes[val.Parent]
    42  		if hasParent {
    43  			parent := iparent.(ITreeNode)
    44  			parent.AddChild(node.(*TreeNode))
    45  		}
    46  	}
    47  	return root
    48  }