哪里返回递归函数的结果

时间:2015-01-08 11:43:40

标签: javascript recursion

我知道这是一个愚蠢的问题,但我几个小时都无法解决。

我有递归函数,它接受JSON对象并创建XML字符串:

function JSONtoXML(object, xml) {
    var name = '';
    for (var prop in object) {
        if (object.hasOwnProperty(prop)) {
            if (typeof object[prop] === 'object'){
                JSONtoXML(object[prop], xml);
            }
            else {
                if (prop === 'name') {
                    name = object[prop];
                    xml += '<' + name;
                }
                else if (prop === 'version') {
                    xml += ' version="' + object[prop] + '">\n<params>\n';
                }
                else if (prop === 'value') {
                    xml += '>' + object[prop] + '</' + name + '>';
                }
                else {
                    xml += ' ' + prop + '="' + object[prop] + '"';
                }
            }
        }
    }
};

我想如果我能在函数完成时返回XML字符串,但我不知道在哪里写return xml;部分。我把它放在任何地方,它只返回字符串的一部分。

2 个答案:

答案 0 :(得分:3)

删除xml作为参数

function JSONtoXML(object) {
    var name = '';
    var xml = '';
    for (var prop in object) {
        if (object.hasOwnProperty(prop)) {
            if (typeof object[prop] === 'object'){
                xml += JSONtoXML(object[prop]);
            }
            else {
                if (prop === 'name') {
                    name = object[prop];
                    xml += '<' + name;
                }
                else if (prop === 'version') {
                    xml += ' version="' + object[prop] + '">\n<params>\n';
                }
                else if (prop === 'value') {
                    xml += '>' + object[prop] + '</' + name + '>';
                }
                else {
                    xml += ' ' + prop + '="' + object[prop] + '"';
                }
            }
        }
    }

    return xml;
};

答案 1 :(得分:2)

function JSONtoXML(object, xml) {
    var name = '';
    for (var prop in object) {
        if (object.hasOwnProperty(prop)) {
            if (typeof object[prop] === 'object'){
                JSONtoXML(object[prop], xml);
            }
            else {
                if (prop === 'name') {
                    name = object[prop];
                    xml += '<' + name;
                }
                else if (prop === 'version') {
                    xml += ' version="' + object[prop] + '">\n<params>\n';
                }
                else if (prop === 'value') {
                    xml += '>' + object[prop] + '</' + name + '>';
                }
                else {
                    xml += ' ' + prop + '="' + object[prop] + '"';
                }
            }
        }
    }

   return xml;// Here return the result
};

完成处理后返回!在这种情况下,在函数关闭之前。

相关问题