树形数据结构递归,forEach终止循环,for循环里面嵌套if语句执行顺序问题

1、树形结构递归通过id找到对应label:

export function findTreeItem(table, id, key = 'id') {   let hasFound = false // 表示是否有找到id值   let result = null   const fn = function(data) {     if (Array.isArray(data) && !hasFound) {       console.log('是数组')       // 判断是否是数组并且没有的情况下     data.some(item => {    //使用some替换forEach,forEach无法终止循环       if (data.find(item => item[key] == id)) {  //不能使用if item[key]==id),否则for循环执行完之后才能进入if语句。         console.log('相等'+item)         // 数据循环每个子项,并且判断子项下边是否有id值         result = item // 返回的结果等于每一项         console.log(result)         hasFound = true // 并且找到id值         return true  //跳出循环体,终止循环。       } else if (item.children) {         fn(item.children) // 递归调用下边的子项       }   })      }     }   fn(table) // 调用一下   return result } 树形数据结构递归,forEach终止循环,for循环里面嵌套if语句执行顺序问题

 

 

上一篇:数组中的for..in../for..of../forEach()方法的区别


下一篇:【题解】【运算符重载】Complex