Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修复此函数以递归方式搜索对象中的所有键实例?_Javascript_Variable Declaration - Fatal编程技术网

Javascript 如何修复此函数以递归方式搜索对象中的所有键实例?

Javascript 如何修复此函数以递归方式搜索对象中的所有键实例?,javascript,variable-declaration,Javascript,Variable Declaration,我试图遍历一个对象来查找一个键的所有实例,并获取与该键相关联的任何值。(该对象可能在不同深度多次使用一个关键点) 我很好地找到了我想要的值,但是当我尝试从递归的“TraverseQuestData”(找到值后)后退时,我陷入了无限循环 我已经找了好几个小时了,似乎找不到问题所在。如果我能得到任何帮助,我将不胜感激。谢谢 //traverse table for search_key. add anything to returning data that is a value associate

我试图遍历一个对象来查找一个键的所有实例,并获取与该键相关联的任何值。(该对象可能在不同深度多次使用一个关键点)

我很好地找到了我想要的值,但是当我尝试从递归的“TraverseQuestData”(找到值后)后退时,我陷入了无限循环

我已经找了好几个小时了,似乎找不到问题所在。如果我能得到任何帮助,我将不胜感激。谢谢

//traverse table for search_key. add anything to returning data that is a value associated with the search key
function TraverseQuestData(quests, search_key, token_cap, token_partial){
    level_data = []
    for(var key of Object.keys(quests)){
        var value = quests[key]

        if(typeof(value) == "object"){

            var extra_strings = _.cloneDeep(TraverseQuestData(value, search_key, token_cap, token_partial + key + '_'))
            for(i=0; i < extra_strings.length; i++){
                level_data.push(extra_strings[i]); 
            }
        } else if(key == search_key){
            level_data.push({
                token: (token_partial + token_cap),
                value: value
            });
        }
    }
    return level_data;
}
//遍历搜索键的表。向返回的数据中添加任何与搜索键关联的值
函数TraverseQuestData(任务、搜索密钥、令牌上限、令牌部分){
级别_数据=[]
for(对象的变量键。键(任务)){
var值=任务[键]
if(类型(值)=“对象”){
var extra_strings=u.cloneDeep(TraverseQuestData(值、搜索键、标记上限、标记部分+键+'''.'))
对于(i=0;i
这是一个愚蠢错误的结果

未使用var或let定义级别_数据,导致其位于全局范围内。正确地确定变量的范围修复了这个问题


这不是一个无限循环,但由于对象的大小无法区分(程序因步骤太多而崩溃)

请添加一个对象、函数调用和想要的结果。
quests
是否有循环?…一如既往,我在请求帮助后设法解决了问题。。(对我来说,这似乎是很平常的事)。我在为您的请求获取信息的过程中,在清理代码和记录相关对象之间,我意识到我没有在“level_data=[]”前面加上“var”或“let”。使其成为一个全球性的、呈指数级增长的组织。事实证明,这不是一个无限循环,只是一个指数级的越来越大的循环,到了无法区分的程度。非常感谢你的帮助!我应该如何结束这个问题?请结束这个问题,或者自己回答。