1.将带有父级数组转成树状数组
func GetTreeArray(num []gorose.Data, pid int64, itemprefix string) []gorose.Data {
childs := ToolFar(num, pid) //获取pid下的所有数据
var chridnum []gorose.Data
if childs != nil {
var number int = 1
var total int = len(childs)
for _, v := range childs {
j := ""
k := ""
if number == total {
j += "└"
k = ""
if itemprefix != "" {
k = " "
}
} else {
j += "├"
k = ""
if itemprefix != "" {
k = "│"
}
}
spacer := ""
if itemprefix != "" {
spacer = itemprefix + j
}
v["spacer"] = spacer
v["children"] = GetTreeArray(num, v["id"].(int64), itemprefix+k+" ")
chridnum = append(chridnum, v)
number++
}
}
return chridnum
}
返回结果如下:
2.将getTreeArray的结果返回为二维数组
func GetTreeList_txt(data []gorose.Data, field string) []gorose.Data {
var midleArr []gorose.Data
for _, v := range data {
var children []gorose.Data
if _, ok := v["children"]; ok {
children = v["children"].([]gorose.Data)
} else {
children = make([]gorose.Data, 0)
}
delete(v, "children")
v[field+"_txt"] = v["spacer"].(string) + " " + v[field+""].(string)
if len(children) > 0 {
v["haschild"] = 1
} else {
v["haschild"] = 0
}
if _, ok := v["id"]; ok {
midleArr = append(midleArr, v)
}
if len(children) > 0 {
newarr := GetTreeList_txt(children, field)
midleArr = ArrayMerge_x(midleArr, newarr)
}
}
return midleArr
}
3.调用的数组拼接函数
func ArrayMerge_x(ss ...[]gorose.Data) []gorose.Data {
n := 0
for _, v := range ss {
n += len(v)
}
s := make([]gorose.Data, 0, n)
for _, v := range ss {
s = append(s, v...)
}
return s
}
获取更多Go开发资源请自行去 GoFly全栈开发社区获取