数据特征
分级编码:如一级1001 - 二级节点100101 - 三级节点 10010101
数据样例
编码字段为subjcode

思路
递归方式,从编码位数多到少,依次寻找并挂接到父节点,走到最低编码位数,完成。
代码
参数resData即是上图数据样例的数据,编码字段为subjcode。
【不再解释了哈】
function parseToResultData(resData) {
var codeDic = {};
var codeMaxLen = 0;
var codeMinLen = 100;
resData.forEach((item) => {
codeDic[item.subjcode] = item;
if (item.subjcode.length > codeMaxLen) {
codeMaxLen = item.subjcode.length;
}
if (item.subjcode.length < codeMinLen) {
codeMinLen = item.subjcode.length;
}
});
console.log("编码最短位数:" + codeMinLen);
console.log("编码最长位数:" + codeMaxLen);
for (var s = codeMaxLen; s > codeMinLen; s -= 2) {
resData.forEach(item => {
if (item.subjcode.length == s) {
var pcode = item.subjcode.substring(0, s - 2);
if (codeDic[pcode] != undefined) {
if (codeDic[pcode].children == undefined) {
codeDic[pcode].children = [item];
} else {
codeDic[pcode].children.push(item);
}
} else {
console.log("未找到父节点", item);
}
}
});
console.log("完成:" + s);
}
var resultData = [];
Object.keys(codeDic).forEach(k => {
if (("" + k).length == codeMinLen) {
resultData.push(codeDic[k]);
}
});
console.log("resultData", resultData);
return resultData;
}
解析完成后的数据结构如下,可用于绑定到树控件:


645

被折叠的 条评论
为什么被折叠?



