递归一般是用来处理不确定层级的树形数据
比如想要获取树形菜单数据里面的每一个id就可以使用递归

  1. var data = [{
  2. name: 'a',
  3. id: 101,
  4. children: [{
  5. name: 'bb',
  6. id: 101101,
  7. children: []
  8. },
  9. {
  10. name: 'bb',
  11. id: 101102,
  12. children: [{
  13. name: '101102101',
  14. id: 101102101,
  15. children: []
  16. }]
  17. },
  18. {
  19. name: 'bb',
  20. id: 101103,
  21. children: []
  22. }, {
  23. name: '101104',
  24. id: 101104,
  25. children: []
  26. }
  27. ]
  28. }];

然后就是用递归函数来遍历所有数据进行获取

  1. // 用来保存id
  2. var idArr = []
  3. function getId(treeData, arr) {
  4. data.forEach(ele => {
  5. idArr.push(ele.id)
  6. // 判断有子元素,并且子元素的长度大于0就再次调用自身
  7. if (ele.children && ele.children.length > 0) {
  8. getId(ele.children, arr)
  9. }
  10. })
  11. }
  12. getId(data, idArr)
  13. console.log(idArr)