首页 > 编程语言 >JavaScript——递归

JavaScript——递归

时间:2023-09-25 17:56:35浏览次数:33  
标签:arr 递归 JavaScript value item array children

// 递归:找到所有节点,并在每个节点上添加属性
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

 

标签:arr,递归,JavaScript,value,item,array,children
From: https://www.cnblogs.com/gamepen/p/17728489.html

相关文章

  • 递归实现树形结构数据的查询处理
    最近在做一个树形结构数据的处理,类似于俄罗斯套娃那种无限层数的那种树形结构,查询出所有数据并按层级进行展示于是做了一个小demo,数据库大概如下:处理完的数据如下:[{"id":1,"name":"零食","desc":"最初级","pid":0,"nodeSign......
  • 【JavaScript】JavaScript、Java 计算两个日期时间内的每一周,不足一周的按照一周计算
    计算两个日期时间内的每一周,不足一周的按照一周计算JavaScriptfunctionsplitWeeks(startDate,endDate){letstart=newDate(startDate);letend=newDate(endDate);letweeks=[];letcurrentDate=newDate(start);letweekStart=newDate(currentDat......
  • 无涯教程-JavaScript - RANK.AVG函数
    描述RANK.AVG函数在提供的值数组中返回给定值的统计等级。如果列表中有重复值,则返回平均排名。语法RANK.AVG(number,ref,[order])争论Argument描述Required/OptionalNumberThenumberwhoserankyouwanttofind.RequiredRefAnarrayof,orareferenceto,a......
  • JavaScript函数的使用
    有关函数概念:匿名函数指的是没有函数名称的函数。作用:可以有效的避免全局变量的污染以及函数名的冲突问题。说明:既是函数表达式的另一种表示形式,又可通过函数声明的方式实现调用。函数语法varfun4=function(){console.log("我是匿名函数中封装的一段代码");......
  • 无涯教程-JavaScript - POISSON.DIST函数
    描述POISSON.DIST函数返回泊松分布。泊松分布的常见应用是预测特定时间的事件数。语法POISSON.DIST(x,mean,cumulative)争论Argument描述Required/OptionalXThenumberofevents.RequiredMeanTheexpectednumericvalue.RequiredCumulative确定返回的概率分......
  • 函数递归-汉诺塔问题
    1.问题描述:①有三根柱子X,Y,Z。X杆上有n只碟子②每次移动一块碟子,小的只能叠在大的上面③把所有碟子从X杆经Y杆全部移动到Z杆上.2.递归求解:①n<=1若只有一只碟子,直接X杆→Z杆;②n>1<1>把n-1只碟子按大小递减的次序从X杆经Z杆移动到Y杆;<2>将X杆上第n只碟子移到Z杆;<3>然后再将n-1......
  • 无涯教程-JavaScript - PERCENTRANK.INC函数
    描述PERCENTRANK.INC函数返回数据集中的值的排名,作为数据集的百分比(包括0..1)。此功能可用于判断数据集中值的相对位置。语法PERCENTRANK.INC(array,x,[significance])争论Argument描述Required/OptionalArrayThearrayorrangeofdatawithnumericvaluesthat......
  • 哪个JavaScript混淆工具更好用?测评葡萄牙的JScrambler和中国的JShaman
    两款顶级JavaScript混淆工具测评:JScrambler和JShaman出于JavaScript代码安全需求,JavaScript混淆已经被广泛使用。在这个领域中,有免费的小工具,也有专业、商业级的产品。商业产品在功能强度、保护效果、稳定性等各方面都是全优于免费小工具的。本文将对两款专业、商业JavaScript......
  • 递归 (比较5个数的大小)
    #include<bits/stdc++.h>usingnamespacestd;intmax(inta[],intn){ intt; if(n==1){ t=a[1]; }else{ if(max(a,n-1)>a[n]){ t=max(a,n-1); }else{ t=n[a]; } } returnt;}intmain(intargc,char**argv){ inta[6]; for(inti=0;i......
  • 递归求最大值
    #include<bits/stdc++.h>usingnamespacestd;intt,n,a;intf(intn[],inta){ if(a==1){ t=n[1]; }else{ if(f(n,a-1)>n[a]){ t=f(n,a-1); }else{ t=n[a]; } } returnt;}intmain(){ intn[6],x; for(inti=0;i<5;i++){ cin>&g......