一般情况,我们请求来的数据不是级联结构,但是又要支持级联结构,所以我们必须转换成级联数据才行
这里提下数据结构中级联数据怎么建立
1.名称 name
2.键值 key
3.父级 fatherId (如果有就填父级id,没有就是null)
4.级联路径 path (他是父级+当前级别,ex:0-1-,父级就是0,当前级别就是-,这样目的就是为了上级查询)
//调用,这里我写obj其实目的就是通过不同的键值,调用也可以不同,
//比如你有个数据键值对是gsName,有的可能是aiName,所以 封装了下,可以对其他数据进行编辑
let obj={
label:"gsName",
value:"gsSeno",
fatherId:"gsPaid"
}
//data是请求来的值
let data= transformTree(data,obj)
//处理级联数据
function transformTree(list, obj) {
let tree = [];
for (let i = 0, len = list.length; i < len; i++) {
if (!list[i][obj.fatherId]) {
let item = queryChildren(list[i], list, obj);
item.label = item[obj.label];
item.value = item[obj.value];
// item.extra=item;
tree.push(item);
}
}
return tree;
};
function queryChildren(parent, list, obj) {
let children = [];
for (let i = 0, len = list.length; i < len; i++) {
if (list[i][obj.fatherId] === parent[obj.value]) {
let item = queryChildren(list[i], list, obj);
item.label = item[obj.label];
item.value = item[obj.value];
// item.extra=item;
children.push(item);
}
}
if (children.length) {
parent.children = children;
}
return parent;
}