单层数组生成树状结构
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)