测试
by yuezk
JavaScript
/*
已知数组
arr = [
{id:1, pid:0},
{id:2, pid:1},
{id:3, pid:1},
{id:4, pid:0},
{id:5, pid:1}
];
// id为每个成员自己的id,pid为它的父亲的id, pid为0表示没有父亲,即根成员
转成下面的树形式
[
{
"id": 1, "pid": 0,
"members": [
{
"id": 2, "pid": 1
},
{
"id": 3, "pid": 1
},
{
"id": 5, "pid": 1
}
]
},
{
"id": 4, "pid": 0,
"members": []
}
]
*/
var arr = [
{id:1, pid:0},
{id:2, pid:1},
{id:3, pid:1},
{id:4, pid:0},
{id:5, pid:1}
];
var result = [], cur, hash = {};
for (var i = 0, len = arr.length; i < len; i++) {
cur = arr[i];
hash[cur.pid] ? hash[cur.pid].push(cur) : (hash[cur.pid] = [cur]);
}
for (var j = 0; j < hash['0'].length; j++) {
result.push({
id: hash['0'][j].id,
pid: hash['0'][j].pid,
members: hash[hash['0'][j].id] || []
});
}
console.log(JSON.stringify(result, null, '\t'));