JavaScript——递归

发布时间 2023-09-25 17:55:35作者: 游戏三昧的木笔
// 递归:找到所有节点,并在每个节点上添加属性
recursionMethod(data);
const recursionMethod = (array:any) => {
    let i;
    for (i in array) {
       let arr = array[i];
       // 是否存在children,存在则添加一个value属性,并赋值id
       // 然后继续递归,查找arr.children下是否还有children
       if (arr.children) {
          arr["value"] = arr.id;
          recursionMethod(arr.children);
       } else {
          // 已经找到最后一个没有children的节点,直接添加属性,结束递归
          arr["value"] = arr.id;
       }
    }            
}

// 递归:寻找存在目标值的节点
searchValue(data, value);
const searchValue = (array:any, target:any) => {
    // 判断array是否为null, undefined, 0, NaN, false, 空字符串
    // 以及判断array长度是否大于0
    if (array && array.length) {
       for (let item of source) {
          if (item.targetValue == target) {
             // 可以标记该节点存在目标值或执行某些操作
             item.flag = true
          } else if (item.children && item.children.length){
             // 继续查找目标值
             searchValue(item.cchildren, target);
          }
       }
    }
}

 

参考:https://www.cnblogs.com/qdkfyym/p/13254448.html