2016-09-13 38 views
0

我想使对象喜欢制作递归函数

OBJ = {2:{3:{4:{}}}}

function tsttt(){ 
    var tstObj = {}; 
    var cntr = 0; //counter 
    var key = [2,3,4]; ///keys array what I want to put in object 

    function re(obj){ 
    var k = key[cntr]; 
    if(cntr == 2){ 
     return obj; 
    }else if(!(k in obj)){ 
     obj[k] = {}; 
    } 
    cntr++; 
    return re(obj[k]); 
    } 
    var rslt = re(tstObj); 
    Logger.log(rslt); //google apps script log 
} 

它现在返回空对象{}

回答

0

它返回您创建的最后一个对象,或分配给“3”的属性。如果你想要它返回完整的对象,然后让它返回tstObj。

function re(obj){ 
    var k = key[cntr]; 
    if(cntr == 2){ 
     return tstObj; 
    }else if(!(k in obj)){ 
     obj[k] = {}; 
    } 
    cntr++; 
    return re(obj[k]); 
    }