递归查找解决方案


title: 递归查找
date: 2019-08-06 17:50:39
tags: “JavaScript”

很多时候,我们通过网络请求返回后台数据之后,需要在前端页面中显示,通常有一些嵌套多个数组的数据,我们称之为‘树形结构’数据,
而我们通常碰到搜索题目id查找对应的数据,又或者我们打开了一个题目,需要点击下一题的时候,我们往往需要通过id去获取题目这个对象;
下面array其实就是多个题目对象组成,我们直接上代码;

var array = [
            {
                id: 1,
				title:"a",
                children:[{
                        id:2,
                        children:[]
                    }]
            },

            {
                id:3,
				title:"b",
                children:[]
            },

            {
                id:4,
				title:"c",
                children:[
                    {
                        id:5,
						title:"c1",
                        children:[
                            {
                                id:6,
								title:"c2",
                                children:[]
                            },

                            {
                                id:7,
								title:"c3",
                                children:[]
                            }
                        ]
                    }
                ]
            }
        ];

方法一:
var returnedItem;

    var find = function(arr, id){
        arr.forEach((item) => { 
             if(item.id==id)
             {        
                 returnedItem = item;
                 return item;
             }
             else if(item.children.length > 0)
             {
                 find(item.children, id);                        
             }                   
        })
    }

    var item = find(array, 7);
    console.log(returnedItem);

方法二:

var returnedItem;

    var find = function(arr, id){
        for (var a = 0; a < arr.length; a++) {
            if(arr[a].id == id)
             {
                 returnedItem = arr[a];
                 return item;
             }
             else if(arr[a].children != undefined && arr[a].children.length > 0)
             {
                 find(arr[a].children, id);
             }else {
             }
        }
    }

    var item = find(array, 7);
    console.log(returnedItem);

其中7为你输入的id,得到的是id为7的对象;returnedItem.id和returnedItem.title就是我们想要的数据;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值