// 转换前:source = [{ id: 1, pid: 0, name: 'body' }, { id: 2, pid: 1, name: 'title' }, { id: 3, pid: 2, name: 'div' }]// 转换为: tree = [{ id: 1, pid: 0, name: 'body', children: [{ id: 2, pid: 1, name: 'title', children: [{ id: 3, pid: 1, name: 'div' }] } }]
let source = [ { id: 1, pid: 0, name: 'body' }, { id: 2, pid: 1, name: 'title' }, { id: 3, pid: 2, name: 'div' } ] function etree(arr) { for (let i = arr.length - 1; i > 0; i--) { if (arr[i].pid == arr[i - 1].id) { arr[i - 1]['children'] = arr.pop() } } return arr } console.log(etree(source));