学习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

 

你可能感兴趣的:(javaScript基础,学习中遇到的问题)