我们如何在JavaScript中的嵌套数组中获得递归可以';你不能去吗?
所以我似乎已经找到了一个我认为很容易解决的终极问题,但我个人在所有论坛上研究了3小时后放弃了XD 所以我访问了一个包含webplayer.js文件的在线网站。在这个包中,我们有一个非常大的嵌套数组,它存储了应用程序的所有变量,在超过递归限制之前,任何递归函数都无法进入该数组 我想要在这个js文件中访问一个变量的原因是能够用我自己的js文件操作一个变量(尝试创建一个插件/tampermonkey脚本,尽管XD从未如此)。因此,我希望在chrome控制台中的大型阵列中找到这个特定的键,以便能够对其进行编辑 如果我想在这里操作一个位于这个大数组中的变量,例如:我们如何在JavaScript中的嵌套数组中获得递归可以';你不能去吗?,javascript,arrays,reactjs,google-chrome-devtools,nested-lists,Javascript,Arrays,Reactjs,Google Chrome Devtools,Nested Lists,所以我似乎已经找到了一个我认为很容易解决的终极问题,但我个人在所有论坛上研究了3小时后放弃了XD 所以我访问了一个包含webplayer.js文件的在线网站。在这个包中,我们有一个非常大的嵌套数组,它存储了应用程序的所有变量,在超过递归限制之前,任何递归函数都无法进入该数组 我想要在这个js文件中访问一个变量的原因是能够用我自己的js文件操作一个变量(尝试创建一个插件/tampermonkey脚本,尽管XD从未如此)。因此,我希望在chrome控制台中的大型阵列中找到这个特定的键,以便能够对其进
(“视频自动播放”:true)
,我现在在chrome中能够做到这一点的唯一方法是:
var autoPlay=Key to(“video autoPlay”:true)
autoPlay=False代码>
但要使其自动化,我不能依赖于设置断点,因此我需要能够在非常大的数组中访问此密钥
是否有一个javascript函数可以在不进行递归搜索的情况下获取该键,可能是通过哈希id(然后使用某种查找表?)或类似的东西,当我点击var autoPlay=…
的断点时,我可以检查这些函数,并尝试找到一种方法,在im超出范围后再次唯一地访问该变量。(我确实尝试将其添加到监视列表中,但一旦断点继续并超出范围,它就会被删除)
总而言之,我相信在构建生产文件时,编码的React变量会变成一个嵌套变量数组。因此,如果React能够立即访问嵌套数组中的这些变量,这让我相信一定有某种查找表,我们应该能够说类似于var unreachableKey=GetKeyFromNestedArray(“视频自动播放”)??
事先非常感谢!:D
编辑附加的代码段:
这是阵列结构的一小部分
这是我可以找到变量并简单放置断点的地方之一。
ps.原始文件说r=t.videoAutoPlay
我将其更改为r=t.video-autoplay
以匹配所有内容:D您可以使用以下语法访问对象矩阵的元素:
let array = {"arr": {"nested1":{"nested2":{"nested3": "Hello!"}}}};
let deep = array["arr"]["nested1"]["nested2"]["nested3"];
console.log(deep);
我已经成功地找到了这个嵌套的、讨厌的键(不仅有字典,还有混合字典和列表)!如果将来需要的话,我可以将代码分享给任何人。我可以说,这是一个递归函数,它成功地得到了它,我以前无法得到它的原因是,在stackoverflow发布的这类函数的大多数代码也迭代了每个字符串中的每个字符,因为Object.keys()
函数还将字符串拆分为单独的字符,这使得递归深度达到了惊人的深度
下面是一个改进的代码:
function findByKey(obj, key) {
if(obj==null || obj==undefined ){
return;
}
if(obj.constructor === Object || obj.constructor === Array){
var keys = Object.keys(obj);
for(i in keys){
var i = keys[i];
if(key == i){
return obj;
}else{
var test = findByKey(obj[i], key);
if(test != undefined){
return test;
}
}
}
}else if(obj == key){
return key;
}
return;
}
非常感谢用户wOxxOm指出,这样的函数应该能够处理递归深度,因此我可以设法找出问题。您在描述问题方面做得很好,但我们也需要查看代码。@IanKemp哦,对不起,当然会在一秒钟内上传!:如果一个小的库是允许的,像(免责声明:my)这样的东西就可以了。请不要上传代码的图片。请看@Phil哦抱歉,是不是智能感知着色有助于更好地形象化:(难道没有其他方法吗?我相信我们有400种类似嵌套的古怪。XDYikes!我不知道,抱歉。