let arr = [ { code: '1', level: 1 }, { code: '1-1', parentCode: '1', level: 2 }, { code: '2', level: 1 }, { code: '2-1', parentCode: '2', level: 2 }, { code: '2-1-1', level: 3, parentCode: '2-1' }, { code: '3', level: 1 }, ]; function transArrToTree (data) { let result = []; data.forEach(item => { if (!item.parentCode) { result.push({ ...item, children: getChildren(item.code, data) }); } }); return result; } function getChildren (parentCode, data) { let children = []; data.forEach(item => { if (item.parentCode === parentCode) { children.push({ ...item, children: getChildren(item.code, data) }) } }); return children; }