1. // 转换前:
    2. source = [{
    3. id: 1,
    4. pid: 0,
    5. name: 'body'
    6. }, {
    7. id: 2,
    8. pid: 1,
    9. name: 'title'
    10. }, {
    11. id: 3,
    12. pid: 2,
    13. name: 'div'
    14. }]
    15. // 转换为:
    16. tree = [{
    17. id: 1,
    18. pid: 0,
    19. name: 'body',
    20. children: [{
    21. id: 2,
    22. pid: 1,
    23. name: 'title',
    24. children: [{
    25. id: 3,
    26. pid: 1,
    27. name: 'div'
    28. }]
    29. }
    30. }]
    1. let source = [
    2. {
    3. id: 1,
    4. pid: 0,
    5. name: 'body'
    6. }, {
    7. id: 2,
    8. pid: 1,
    9. name: 'title'
    10. }, {
    11. id: 3,
    12. pid: 2,
    13. name: 'div'
    14. }
    15. ]
    16. function etree(arr) {
    17. for (let i = arr.length - 1; i > 0; i--) {
    18. if (arr[i].pid == arr[i - 1].id) {
    19. arr[i - 1]['children'] = arr.pop()
    20. }
    21. }
    22. return arr
    23. }
    24. console.log(etree(source));