递归函数无法正常工作

麦威尔逊

我有一个可恢复的功能,该功能应该遍历json对象并输出表达式。然而,我recusion似乎是了,因为它的输出字段1!=“” AND场3 ==“”时,它应该是输出字段1!=“”和Field2 ==“” AND场3 ==“”

我尝试了几种不同的方法,使它起作用的唯一方法是创建全局变量,outstring而不是将其传递给函数。我要去哪里?当我逐步执行该操作时,我会看到正确的结果,但是一旦堆栈反转,它将开始重置outstring,然后再次其堆栈回去,但忽略了中间(field2)。

JSFiddle

function buildString(json, outstring) {
        var andor = json.condition;
    for (var rule in json.rules) {
        if (json.rules[rule].hasOwnProperty("condition")) {
            buildString(json.rules[rule], outstring);
        } else {
            var field = json.rules[rule].id;
            var operator = json.rules[rule].operator;
            var value = json.rules[rule].value == null ? '' : json.rules[rule].value;
            outstring += field + ' ' + operator + ' ' + value;
            if (rule < json.rules.length - 1) {
                outstring += ' ' + andor + ' ';
            }
        }
    }
    return outstring;
}

var jsonObj = {"condition":"AND","rules":[{"id":"field1","operator":"!= ''","value":null},{"condition":"AND","rules":[{"id":"field2","operator":"== ''","value":null}]},{"id":"field3","operator":"== ''","value":null}]};

$('#mydiv').text(buildString(jsonObj, ""));
查理

该函数返回一个字符串。

当您从自身内部递归调用该函数时,您不会对该实例返回的字符串进行任何操作,只是调用了无处可返回的函数

改变:

    if (json.rules[rule].hasOwnProperty("condition")) {
       buildString(json.rules[rule], outstring);
    } 

    if (json.rules[rule].hasOwnProperty("condition")) {
       // include the returned value in concatenated string
       outstring += buildString(json.rules[rule], outstring);
    }

演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

strcmp函数无法正常工作

来自分类Dev

递归阶乘函数无法正常工作

来自分类Dev

较少的递归混合功能无法正常工作

来自分类Dev

无法使SHGetKnownFolderPath()函数正常工作

来自分类Dev

Lambda函数无法正常工作

来自分类Dev

修改后的函数没有递归无法正常工作

来自分类Dev

未来类型的递归函数无法正常工作

来自分类Dev

strcmp函数无法正常工作

来自分类Dev

C ++函数无法正常工作

来自分类Dev

函数mktime()无法正常工作

来自分类Dev

递归方法无法使用JavaScript正常工作

来自分类Dev

递归无法正常工作

来自分类Dev

getimagesize函数无法正常工作

来自分类Dev

构造函数无法正常工作

来自分类Dev

较少的递归混合功能无法正常工作

来自分类Dev

ucwords函数无法正常工作

来自分类Dev

无法使DELETE函数正常工作

来自分类Dev

PHP函数无法正常工作

来自分类Dev

构造函数无法正常工作

来自分类Dev

无法使JS函数正常工作

来自分类Dev

无法使MySQL函数正常工作

来自分类Dev

无法正常工作explode()函数

来自分类Dev

函数sameChars无法正常工作

来自分类Dev

简单的递归代码将无法正常工作

来自分类Dev

鉴于SQL递归CTE无法正常工作

来自分类Dev

Lambda函数无法正常工作

来自分类Dev

isset函数无法正常工作

来自分类Dev

Javascript函数无法正常工作

来自分类Dev

jQuery函数无法正常工作