zTreeソートアルゴリズム
2052 ワード
htmlファイルを作成します.コードは次のとおりです.
ZTREE DEMO
nodelist=
[
{ id:1, pId:0, name:" 1 "},
{ id:11, pId:1, name:" 11 "},
{ id:111, pId:11, name:" 111"},
{ id:112, pId:11, name:" 112"},
{ id:113, pId:11, name:" 113"},
{ id:114, pId:11, name:" 114"},
{ id:12, pId:1, name:" 12"},
{ id:121, pId:12, name:" 121"},
{ id:122, pId:12, name:" 122"},
{ id:123, pId:12, name:" 123"},
{ id:124, pId:12, name:" 124"},
{ id:13, pId:1, name:" 13 "},
{ id:2, pId:0, name:" 2"},
{ id:21, pId:2, name:" 21"},
{ id:211, pId:21, name:" 211"},
{ id:212, pId:21, name:" 212"},
{ id:213, pId:21, name:" 213"},
{ id:214, pId:21, name:" 214"},
{ id:22, pId:2, name:" 22 "},
{ id:221, pId:22, name:" 221"},
{ id:222, pId:22, name:" 222"},
{ id:223, pId:22, name:" 223"},
{ id:224, pId:22, name:" 224"},
{ id:23, pId:2, name:" 23"},
{ id:231, pId:23, name:" 231"},
{ id:232, pId:23, name:" 232"},
{ id:233, pId:23, name:" 233"},
{ id:234, pId:23, name:" 234"},
{ id:3, pId:0, name:" 3 "}
];
var key='id',parentKey='pId',childKey='children';
//
function reconstruction(sNodes){
var r = [];
var tmpMap = {};
// map
for (i = 0, l = sNodes.length; i < l; i++) {
// key "id" , value
tmpMap[sNodes[i][key]] = sNodes[i];
}
// ,
for (i = 0, l = sNodes.length; i < l; i++) {
// ,
if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) {
if (!tmpMap[sNodes[i][parentKey]][childKey])
tmpMap[sNodes[i][parentKey]][childKey] = [];
tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]);
} else {
//
r.push(sNodes[i]);
}
}
return r;
}
console.log(reconstruction(nodelist))