Javascript 递归仅触发一次

标签 javascript json recursion

我有以下代码来运行 JSON 树并获取所需的 key 。我有 8 个“complexType”键(有一个包含更多元素的树节点),但递归仅有效一次。不会调用所有其他迭代。

function getStructure(json){
    sequence = json["sequence"]["element"]        
    for(i=0;i<sequence.length;i++){
        innerSequence = sequence[i]         
        if(innerSequence["complexType"] != undefined){
            getStructure(innerSequence["complexType"])
        }
    }
}

这是完整的 json 文件 https://jsoncompare.com/#!/simple/id=d1c3517a3a50be7cb05bd343d1eab848/

最佳答案

您正在使用全局变量进行循环!在 JavaScript 中,所有未使用 varletconst 声明的引用和赋值都是全局的。

因此,每当调用 getStructure 时,所有实例的 i 都会重置为 0。变量 sequenceinnerSequence 也是全局变量。

此外,您的函数名称表明它应该返回当前返回的 undefined 以外的内容。

缺少分号。您应该使用“use strict”进行编程,以避免引擎而不是您决定如何解释您的程序。

关于Javascript 递归仅触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48976464/

相关文章:

javascript - 选择 OnChange 在表单中不起作用

javascript - 一个请求中包含 JSON 和 HTML?

Android 使用 Gson 解析嵌套的 JsonArray

c++ - 将此递归函数转换为迭代函数

javascript - 如何在 Node js中创建异步回调?

javascript - 成功后执行 2 个异步函数

javascript - Angularjs oauth 弹出窗口,等待 JSON 响应

c# - Linq递归父子

java - 算法递归编码bat

JavaScript/Angular 借用函数并附加参数