面试题:写一个find方法,根据id查找data树中的任意一项。(阿里前端面试题)

阿里前端面试原题
如题:写一个find方法,根据id查找data树中的任意一项。

const data = [{
  id:"1000",
  name:"深圳",
  children:[{
    id:"1001",
    name:"宝安区",
    children:[]
  },{
    id:"1002",
    name:"南山",
    children:[{
      id:"1012",
      name:"粤海街道",
      children:[{
        id:"1112",
        name:"阿里中心",
        children:[]
      },{
        id:"1212",
        name:"深圳湾人才公园",
        children:[]
      }]
    }]
  }]
},{
  id:"2000",
  name:"广州",
  children:[{
    id:"2001",
    name:"越秀区",
    children:[{
      id:"2011",
      name:"人民公园"
    }]
  },{
    id:"2002",
    name:"天河区",
    children:[]
  }]
}];
function find(data, id){
  for(let i=0; i<data.length; i++){
    if(data[i].id === id){
      // 找到匹配的id,返回对应的name
      return data[i].name;
    }
    if(data[i].children && data[i].children.length > 0){
      // 递归查找子节点
      const result = find(data[i].children, id);
      if(result && result !== "未找到"){
        // 如果找到了结果,并且不是"未找到",则返回结果
        return result;
      }
    }
  }
  // 遍历完整个data数组,仍未找到匹配的id,返回"未找到"
  return "未找到";
}
console.log(find(data, "1000"));   // 深圳
console.log(find(data, "2001"));   // 越秀区
console.log(find(data, "2011"));   // 人民公园
console.log(find(data, "1012"));   // 粤海街道
console.log(find(data, "1112"));   // 阿里中心
console.log(find(data, "1222"));   // 未找到
  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨树林er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值