javascript - 递归函数的返回结果在哪里

标签 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; 部分。无论我把它放在哪里,它都只返回字符串的一部分。

最佳答案

删除 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;
};

关于javascript - 递归函数的返回结果在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27839343/

相关文章:

recursion - 如何避免clojure递归函数中的stackoverflow?

recursion - 有没有更有效的方法来编写这个递归过程?

php - 编写表达式以递归地提取括号之间的数据

JavaScript的.prototype是如何工作的

javascript - Alpinejs : change values inside children from parent element

javascript - 如何获取具有相互比较字段的firebase文档?

c++ - 在 C++ 中使用递归的主要准则是什么?

java - 两个类,相同的代码,一个获取 StackOverflow

javascript - jssor slider 图像在 chrome 浏览器中无法正确显示

javascript - JSON.parse 不适用于 iPad safari