学习JavaScript递归函数

//通过id获取根父级的名字
function idgetparentname(json, id) {

  //for遍历对象数组
    for (var i in json) {

        //如果对象的id等于当前输入id
        if (json[i].id == id) {
         //获取对象的父级id
            var ces = json[i].parentid;
          //若父级id为零 则为根父级
            if (ces == 0) {
         //返回根父级name
                return json[i].name;
         
            } else {

            //递归调用由return返回新的值
             
                return idgetparentname(json, json[i].parentid);

            }

        }
        //console.log('for',i);
    }
    

}

其中for( x in data)的用法是将数组data中的数据一个一个的付给x,此时x是新的变量

递归调用后由return返回新的值,若无return 无法返回值, json[i].name结果为undefined

全部代码:

window.onload = function () {

    var user = [{
            id: 1,
            name: '怎的好',
            age: 20,
            parentid: 0
        },
        {
            id: 2,
            name: '张盼',
            age: 18,
            parentid: 1
        },
        {
            id: 3,
            name: '陆夫人',
            age: 19,
            parentid: 2
        },
        {
            id: 4,
            name: '孤影1',
            age: 17,
            parentid: 0
        },
        {
            id: 5,
            name: '孤影2',
            age: 17,
            parentid: 3
        },
        {
            id: 6,
            name: '孤影3',
            age: 17,
            parentid: 4
        },
    ];

    var values = this.idgetname(user, 5);
    var name = namegetid(user, "张盼");
    //var parentname = idgetparentname(user, 6);
    console.log( idgetparentname(user, 6) );
    
    console.log(values);
    console.log(name);
    //console.log(parentname);
}

//1、通过id获取名字
function idgetname(json, id) {

    //     for(var i=0;i<a.length;i++){
    //     if(a[i].id==b){
    //   console.log(a[i].name);
    //     }  
    // json.id=id
    for (var i in json) {
        if (json[i].id == id) {
            return json[i].name;

        }
    }
}
//2、通过名字获取id
function namegetid(json, id) {

    for (var i in json) {
        if (json[i].name == id) {
            return json[i].id;
        }
    }
}

//3、通过id获取根父级的名字
function idgetparentname(json, id) {

    // console.log('id',id);

    for (var i in json) {

        //
        if (json[i].id == id) {

            var ces = json[i].parentid;

            if (ces == 0) {

                return json[i].name;
         
            } else {
            //递归调用由return返回新的值
                return idgetparentname(json, json[i].parentid);

            }

        }
        //console.log('for',i);
    }
    

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值