zoukankan      html  css  js  c++  java
  • 树状图组件数据转换

    将有id和父级id的正常json数组改变为有children内嵌字段的方法(俄罗斯套娃,可用于树形控件和树形表格的生成,纯js原生代码,不需要其它依赖)

    treeDataFormat(data, idField, parIdField, textField, openClose, rootId) {
                    idField = idField || "id";//目标依据id
                    parIdField = parIdField || "parent_id";//父级id
                    textField = textField || "name";//文本字段
                    rootId = rootId || 0;
                    if (data && data.length > 0) {
                    var dataMapping = {};
                    for (var i = 0; i < data.length; i++) {
                        // dataMapping[data[i][idField]] = $.extend({}, data[i]);
                        dataMapping[data[i][idField]] = data[i];
                        //            dataMapping[data[i][idField]].children = [];
                        dataMapping[data[i][idField]].text = dataMapping[data[i][idField]][textField];
                        dataMapping[data[i][idField]].state = openClose || "open";
                    }
                    //构造上下级关系
                    for (var i = 0; i < data.length; i++) {
                        var tempData = data[i];
                        if (tempData[parIdField] && dataMapping[tempData[parIdField]]) {
                        dataMapping[tempData[parIdField]].children = dataMapping[tempData[parIdField]].children || [];
                        dataMapping[tempData[parIdField]].children.push(dataMapping[tempData[idField]]);
                        }
                    }
                    var treeArray = [];
                    for (var key in dataMapping) {
                        if (dataMapping[key].child_count != null || dataMapping[key].child_count != undefined) {
                        //查询出已明确定义子节点的数目
                        if (dataMapping[key].child_count > 0) { //有子节点
                            if (!dataMapping[key].children || dataMapping[key].children.length == 0) {
                            dataMapping[key].state = "closed";
                            } else {
                            dataMapping[key].state = "open";
                            }
                        } else { //无子节点
                            dataMapping[key].state = "open";
                        }
                        } else {
                        if (!dataMapping[key].children || dataMapping[key].children.length == 0) {
                            dataMapping[key].state = "open";
                        }
                        }
                        if (dataMapping[rootId]) {} else {
                        if (dataMapping[key][parIdField] == rootId) {
                            treeArray.push(dataMapping[key]);
                        }
                        }
                    }
                    if (dataMapping[rootId]) {
                        treeArray.push(dataMapping[rootId]);
                    }
                    return treeArray;
                    }
                    return [];
                };
  • 相关阅读:
    [Codeforces809D] Hitchhiking in the Baltic States
    [Codeforces1148H] Holy Diver
    [PKUWC2018]猎人杀
    [Codeforces566C] Logistical Questions
    越野赛车问题
    Suffix Array
    第05组(65) 需求分析报告
    第05组(65) 团队展示
    第三次作业
    结对编程作业
  • 原文地址:https://www.cnblogs.com/elementzhao/p/12065854.html
Copyright © 2011-2022 走看看