我有以下代码来运行 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 中,所有未使用 var
、let
或 const
声明的引用和赋值都是全局的。
因此,每当调用 getStructure
时,所有实例的 i
都会重置为 0。变量 sequence
和 innerSequence
也是全局变量。
此外,您的函数名称表明它应该返回当前返回的 undefined
以外的内容。
缺少分号。您应该使用“use strict”进行编程,以避免引擎而不是您决定如何解释您的程序。
关于Javascript 递归仅触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48976464/