递归如何跳出循环(try-catch)

  1. 如果循环有多层嵌套,则break,return只能跳出一层。
  2. 使用try {}catch () { }抛出需要的节点可行。

例如:

getNode() {
      // 源数据
      const data = [
        {
          id:'1',
          children :[
            { id:'1.1'},
            { id:'1.2'}
          ]
        },
        {
          id:'2',
        },
      ];
      // 要找的节点
      const keyWord = '1.1';
      // 找到的节点
      let res_name = '';

      try {
        const findName = (data)=> {
          for(let i in data) { 
            const item = data[i]
            console.log('进入循环----', item)
            if(item.id === keyWord) {
              throw item.id;       //找到节点抛出
            }

            if(item.children && item.children.length ) {  //子节点进行递归
              findName(item.children);
            }
          }
        }
        
        findName(data)   // 执行逻辑代码
        
      }catch (name) {
        res_name = name;   //找到的节点
      }
      
      return res_name;  //返回节点
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值