1. const list = [
    2. {
    3. "value": 192,
    4. "label": "技术部",
    5. "children": [
    6. {
    7. "value": 193,
    8. "label": "软件组",
    9. "children": [
    10. {
    11. "value": 195,
    12. "label": "软件一组"
    13. },
    14. {
    15. "value": 196,
    16. "label": "软件二组"
    17. }
    18. ]
    19. },
    20. {
    21. "value": 198,
    22. "label": "运维组"
    23. }
    24. ]
    25. },
    26. {
    27. "value": 200,
    28. "label": "财务部",
    29. "children": [
    30. {
    31. "value": 201,
    32. "label": "会计"
    33. },
    34. {
    35. "value": 203,
    36. "label": "出纳"
    37. }
    38. ]
    39. },
    40. {
    41. "value": 300,
    42. "label": "人资部",
    43. "children": [
    44. {
    45. "value": 301,
    46. "label": "行政"
    47. },
    48. {
    49. "value": 302,
    50. "label": "人资"
    51. }
    52. ]
    53. }
    54. ]

    假设给定一个id = 301,查找出 list 中value = id的对象,并取出对应的label值。

    1. /**
    2. * 递归函数
    3. * @param setValues 树型数据
    4. * @param valueId 查找的id
    5. */
    6. function recursionGet(setValues, valueId) {
    7. let value = null;
    8. for (let index = 0; index < setValues.length; index += 1) {
    9. if (setValues[index].value === valueId) {
    10. value = setValues[index].label;
    11. break;
    12. }
    13. if (setValues[index].children instanceof Array && setValues[index].children.length > 0) {
    14. const text = recursionGet(setValues[index].children, valueId);
    15. if (text)
    16. return text;
    17. }
    18. }
    19. return value;
    20. }
    21. // 调用
    22. const data =recursionGet(list,301)
    23. console.log(data) // 输出 行政

    递归 - 图1