let account_subject_list = [
{
"subject": "1221",
"name": "其他",
"parent": "",
},
{
"subject": "1221.01",
"name": "单位",
"parent": "1221",
},
{
"subject": "1231.01",
"name": "其他款",
"parent": "1231",
},
{
"subject": "2221",
"name": "应交费",
"parent": "",
},
{
"subject": "2221.01",
"name": "税",
"parent": "2221",
},
{
"subject": "2221.01.01",
"name": "税额",
"parent": "2221.01",
},
{
"subject": "2221.01.02",
"name": "税额-02",
"parent": "2221.01",
},
{
"subject": "2221.01.02.01",
"name": "税额-02.01",
"parent": "2221.01.02",
}
]
/**
* 单层数组生成树状结构
*/
function getTree(list) {
const tree = {}
const arr = []
list.forEach((item, index) => {
tree[item.subject] = item; //浅拷贝 item
// tree[item.subject] = JSON.parse(JSON.stringify(item));
console.log(index, tree) //循环从第一次就走完,输出的结果是最后一次循环
})
list.forEach(item => {
if (!tree[item.parent]) {
arr.push(item)
} else {
tree[item.parent].children = tree[item.parent].children || []
tree[item.parent].children.push(item)
}
})
return arr
}
const tree = getTree(account_subject_list)
console.log('tree', tree)