Js 递归处理如何把数据变成级联结构数据

一般情况,我们请求来的数据不是级联结构,但是又要支持级联结构,所以我们必须转换成级联数据才行

这里提下数据结构中级联数据怎么建立
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;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容