// json转树
json_tree(data, id, pid) {
let result = [], temp = {}
for (let i = 0
temp[data[i][id]] = data[i]
}
for (let j = 0
let currentElement = data[j]
let tempCurrentElementParent = temp[currentElement[pid]]
if (tempCurrentElementParent) {
// 如果存在父元素
if (!tempCurrentElementParent["children"]) {
// 如果父元素没有chindren键
tempCurrentElementParent["children"] = []
}
tempCurrentElementParent["children"].push(currentElement)
} else {
// 不存在父元素,意味着当前元素是一级元素
result.push(currentElement)
}
}
return result
},
// 文本转成树
trans_tree(data) {
let result = []
let findChidren = function (parent) {
let stack = [...result]
while (stack.length > 0) {
let item = stack.shift()
if (item.OptName == parent) { return item.children
}
}
for (let str of data) {
let parent = null
let parentId = null
let _arr = str.split('/')
_arr.forEach((temp, i) => {
if (i == 0) {
let Id = new Date().getTime()
parentId = Id
let index = result.findIndex(({ OptName }) => OptName == temp)
if (index == -1) { result.push({ OptName: temp, ParentId: 0, Id: Id, children: [] })
} else {
let children = findChidren(parent)
let _index = children.findIndex(({ OptName }) => { return OptName == temp
if (_index == -1) {
let Id = this.commonApi.customNanoid()
if (i != (_arr.length - 1)) {
children.push({ OptName: temp, Id: Id, ParentId: children[0] && children[0].ParentId || parentId, children: [] })
parentId = Id
} else {
children.push({ OptName: temp, Id: Id, ParentId: children[0] && children[0].ParentId || parentId })
}
}
}
parent = temp
})
}
return result
},
treeConvertToArr(tree) {
let arrs = [];
let result = [];
arrs = arrs.concat(tree);
while (arrs.length) {
let first = arrs.shift();
if (first.children) {
arrs = arrs.concat(first.children);
delete first["children"];
}
result.push(first);
}
return result;
},