function myfun (arr , id){
let array = [];
arr.forEach (function (item,index) {
if((item.parentId || 0) == id){
item["child"] = myfun(arrs,item["id"]);
array.push(item);
}
})
return array;
}
var arr = [{
defaultValue: 'N',
id: 64800297066692610,
name: '全部文件',
seq: '1',
type: 'KNOWLEDGE_FOLDER',
val: '全部文件'
},
{
defaultValue: 'N',
id: 65033482023206910,
name: '二级目录',
parentId: 65032760841994240,
parentName: '一级目录',
parentType: 'KNOWLEDGE_FOLDER',
parentVal: '一级目录',
seq: '1',
type: 'KNOWLEDGE_FOLDER',
val: '二级目录'
},
{
defaultValue: 'N',
id: 65032760841994240,
name: '一级目录',
parentId: 64800297066692610,
parentName: '全部文件',
parentType: 'KNOWLEDGE_FOLDER',
parentVal: '全部文件',
seq: '1',
type: 'KNOWLEDGE_FOLDER',
val: '一级目录'
},
{
defaultValue: 'N',
id: 65033147279998980,
name: '一级目录2',
parentId: 64800297066692610,
parentName: '全部文件',
parentType: 'KNOWLEDGE_FOLDER',
parentVal: '全部文件',
seq: '2',
type: 'KNOWLEDGE_FOLDER',
val: '一级目录2'
}
];
myfun(arr,0);
生成如下数据结构:
处理一个json数据,生成两级树形结构代码:
function changeJson(data){
var r = [];
var tmpMap ={};
for (var i=0, l=data.length; i<l; i++) {
// 以每条数据的id作为obj的key值,数据作为value值存入到一个临时对象里面
tmpMap[data[i].id]= data[i];
}
for (i=0, l=data.length; i<l; i++) {
var key=tmpMap[data[i].parentId];
//循环每一条数据的pid,假如这个临时对象有这个key值,就代表这个key对应的数据有children,需要Push进去
if (key) {
if (!key.children){
key.children = [];
key.children.push(data[i]);
}else{
key.children.push(data[i]);
}
} else {
//如果没有这个Key值,那就代表没有父级,直接放在最外层
r.push(data[i]);
}
}
return r;
};