• 树状图组件数据转换


    将有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 [];
                };
  • 相关阅读:
    使用 SVC 修改代码
    USB device classes
    QUEUE Implement a first in, first out linked list
    Delphi Memory 函数
    ARM CortexM 分支指令编码
    W25Q16 driver
    TStringList.SaveToStream TStringStream.SaveToStream
    CreateFile, DeviceIoControl, ReadFile, WriteFile, CancelIo, CloseHandle, GetOverlappedResult
    CortexM3 / M4 SVC Handler
    move to www.csdn.net
  • 原文地址:https://www.cnblogs.com/elementzhao/p/12065854.html
Copyright © 2020-2023  润新知