JSFiddle - React, Tailwind, and code Playground
HTML
<pre id="result">
</pre>
JavaScript
var arr = [
{id: "1",name: "系统管理",pid: "0"},
{id: "3",name: "角色管理",pid: "1"},
{id: "2",name: "查询角色",pid: "3"},
{id: "4",name: "修改角色",pid: "3"},
{id: "5",name: "删除角色",pid: "3"}
];
function generateTree(arr) {
var root = {text:null};
if (arr.length > 0) {
var objMap = {};
root["expanded"] = true;
root["items"] = [];
arr.forEach(function(item){
var node = {text: item.name};
objMap[item.id] = node;
if(item.pid === 0) {
root["items"].push(node);
} else {
var parent = objMap[item.pid];
parent["expanded"] = true;
if (parent["items"]) {
parent["items"].push(node);
} else {
parent["items"] = [];
parent["items"].push(node);
}
}
});
}
return [root];
}
var json = JSON.stringify(generateTree(arr), null, 2);
document.getElementById("result").innerHTML = json;