js数组转成树形结构
js将数组转成对应的树形结构:
function transformArrayToObject(array) {
const result = {};
array.forEach(item => {
const {id,name,pid,flag} = item;
if (pid == 0) {
result[name] = {id,flag,pid}
} else {
transformObj(result, item)
}
});
return result;
}
function transformObj(obj, item) {
const {id,name,pid,flag} = item;
for (var key in obj) {
var val = obj[key]
if (key != 'id') {
if (typeof val === 'object') {
transformObj(val, item)
}
} else {
if (val == pid) {
obj[name] = {id,flag,pid}
break;
}
}
}
return obj
}
function adjustObj(obj) {
let flag = false;
for (var key in obj) {
if (typeof obj[key] === 'object') {
obj[key] = adjustObj(obj[key]);
flag = true
}
}
if (!flag) {
obj = obj.flag
}
return obj
}
const array = [{id: 1,name: 'index',pid: 0,flag: true},
{id: 2,name: 'monitor',pid: 1,flag: true},
{id: 3,name: 'scan',pid: 1,flag: true},
{id: 4,name: 'subscan',pid: 3,flag: false},
{id: 5,name: 'legder',pid: 0,flag: true},
{id: 6,name: 'add',pid: 5,flag: false},
];
const transformedObject = transformArrayToObject(array);
console.log("没有子级不做处理,依旧是对象结构:", transformedObject)
//const adObj = adjustObj(transformedObject)
//console.log("对没有子级的做处理,不返回对象:", adObj)
效果图:


posted on 2024-04-22 09:58 Breeze_zhou 阅读(434) 评论(0) 收藏 举报
浙公网安备 33010602011771号