<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>json数组转树型嵌套结构</title>
</head>
<body>
<script>
var dataJson = [
{"name":"*a","id":"1","level":"00001"},
{"name":"**a","id":"1","level":"0000100035"},
{"name":"**a","id":"1","level":"0000100036"},
{"name":"***a","id":"1","level":"000010003500020"},
{"name":"***a","id":"1","level":"000010003500021"},
{"name":"***a","id":"1","level":"000010003500022"},
{"name":"*c","id":"1","level":"00003"},
{"name":"**c","id":"1","level":"0000300037"},
{"name":"****a","id":"1","level":"00001000350002100001"},
{"name":"*b","id":"1","level":"00002"}
];
var myArr = [] , newJson = [];
for(var i = 0; i < dataJson.length; i++) {
var thisIndex = dataJson[i].level.length / 5 - 1;
if(myArr[thisIndex] === undefined) {
myArr[thisIndex] = []
}
myArr[thisIndex].push(i)
var newObj={
name :dataJson[i].name,
level :dataJson[i].level
}
newJson.push(newObj)
}
var ladderArr = [];
for(var i = myArr.length - 1; i >= 0; i--) {
switch(i) {
case 0:
for(var l = 0; l < myArr[i].length; l++) {
ladderArr.push(newJson[myArr[i][l]])
}
break;
default:
for(var j = 0; j < myArr[i].length; j++) {
var str = dataJson[myArr[i][j]].level.substr(0, i * 5);
for(var k = 0; k < myArr[i - 1].length; k++) {
if(dataJson[myArr[i - 1][k]].level === str) {
if(newJson[myArr[i - 1][k]].list === undefined) newJson[myArr[i - 1][k]].list = [];
newJson[myArr[i - 1][k]].list.push(newJson[myArr[i][j]])
}
}
}
}
}
console.log(ladderArr)
console.log(JSON.stringify(ladderArr))
</script>
</body>
</html>