// json data
var data = [{
"name": "root",
"parent": 0,
"id": "root",
},
{
"name": "a1",
"parent": "root",
"id": "a1",
},
{
"name": "a2",
"parent": "a1",
"id": "a2",
},
{
"name": "a3",
"parent": "a2",
"id": "a3",
},
{
"name": "b1",
"parent": "root",
"id": "b1",
},
{
"name": "b2",
"parent": "b1",
"id": "b2",
},
{
"name": "b3",
"parent": "b1",
"id": "b3",
}
];
/**
* get tree structure data
* @author Nilav Patel
* @param {array} data -json data
* @param {string} id -id field property name
* @param {string} parent -parent field property name
* @param {object} rootValue -value of root
* @returns {array} -array with tree structure
*/
function getTreeStructure (data, id, parent, rootValue) {
var idToNodeMap = {};
var root = null;
for (var i = 0, datum; node = data[i]; i++) {
node.children = [];
idToNodeMap[node[id]] = node;
if (node[parent] === rootValue) {
root = node;
}
else {
parentNode = idToNodeMap[node[parent]];
parentNode.children.push(node);
}
}
return root;
}
var result = getTreeStructure(data, "id", "parent", 0);
console.log(result);
No comments:
Post a Comment