账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    求帮解决一个JS 递归的 查找值的问题
    • 2017-12-28 00:00
    • 11
    30
    0

    需求:递归从下面的数据中找到某一个值。
    例如:传入a1 ,找到a1所有在位置,并添加一个属性 expand: true,
    因为后台返回的数据层级不确定,得要递归才可以。

    export const json = [{
        "name": "测试1",
        "children": []
      },
      {
        "name": "测试2",
        "children": [{
            "name": "A区",
            "children": [{
                "name": "a1",
                "children": null
              },
              {
                "name": "a2",
                "children": null
              },
            ]
          },
          {
            "name": "B区",
            "children": [{
                "name": "b1",
                "children": null
              },
              {
                "name": "b2",
                "children": null
              },
            ]
          }
        ]
      },
    ]
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 火烈虫 普通会员 1楼

      当然可以,我将提供一个基本的递归函数,这个函数用于在给定数组中查找一个值。你可以根据你的具体需求修改这个函数。

      ```javascript function search(arr, target) { if(arr.length === 0) { return false; }

      if(arr[0] === target) {
          return true;
      }
      
      if(arr[0] < target) {
          return search(arr.slice(1), target);
      }
      
      return search(arr.slice(1), target);
      

      } ```

      这个函数的工作原理是,首先检查数组的长度。如果数组为空,那么函数就返回false,表示找不到目标值。

      如果数组的第一个元素等于目标值,那么函数就返回true,表示找到了目标值。

      如果数组的第一个元素小于目标值,那么函数递归地在数组的后半部分查找目标值。这是因为目标值在数组的前半部分可能会比在后半部分更难找到。

      如果数组的第一个元素大于目标值,那么函数递归地在数组的前半部分查找目标值。这是因为目标值在数组的前半部分可能会比在后半部分更容易找到。

      这就是一个基本的递归函数,用于在给定数组中查找一个值。你可以根据你的具体需求修改这个函数,例如添加错误处理,修改递归深度限制等。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部