数据结构改变

来源:互联网 发布:php查询系统源码 编辑:程序博客网 时间:2024/06/03 16:17

原始数据格式

var data={    "soft":"1111",    "soft.type":"1111",    "soft.condition":"1111",    "wonder":"1111",    "wonder.WONDER":"1111",    "wonder.WONDER.BS_TEST":"1111",    "wonder.WONDER.DB2数据类型":"1111",    "wonder.WONDER.DEP_TABLE":"1111",    "wonder.WONDER.DIC_TABLE":"1111",    "wonder.WONDER.TABLE8_NF":"1111",    "wonder.WONDER.基本信息":"1111",    "wonder.WONDER.姓名":"1111",    "wonder.WONDER.数据类型":"1111"}

转为

var result=[{    "name":"soft",    "val":"1111",    "children":[{        "name":"type",        "val":"1111",    },{        "name":"condition",        "val":"1111",    }]},{    "name":"wonder",    "val":"1111",    "children":[{        "name":"WONDER",        "val":"1111",        "children":[{            "name":"BS_TEST",            "val":"1111"        },{            "name":"DB2数据类型",            "val":"1111"        },{            "name":"DEP_TABLE",            "val":"1111"        },{            "name":"姓名",            "val":"1111"        },{            "name":"数据类型",            "val":"1111"        }]    }]}]

函数

var change = (data)=>{    var result = [],tmp = {},route,parent,val;    for(var item in data){        route = item.split('.');        val = {            "name":route[route.length-1],            "val":data[item]        };        parent = route.filter((e,i,arr)=>i<arr.length-1).join('.');        if(parent!=''){            tmp[parent] = tmp[parent] || result[result.push({})-1];            tmp[parent].children = tmp[parent].children || [];        }        if(item in tmp){            tmp[item].name = val.name;            tmp[item].val = val.val;        }else{            if(parent!=''){                tmp[item] = tmp[parent].children[tmp[parent].children.push(val)-1];            }else{                tmp[item] = tmp[item] || result[result.push(val)-1];            }        }    }    delete tmp;    return result;}
原创粉丝点击