如何递归搜索所有全局变量以查找指定字符串?
搜索全局变量中嵌套的目标值并定位路径
要在浏览器全局变量里找到特定字符串(比如hello),包括嵌套在对象、数组里的属性或值,同时获取对应的完整访问路径,可以用下面的方法:
直接在浏览器控制台(按F12打开)运行这段代码:
function searchGlobalValue(target) { const results = []; // 遍历window上的所有自定义全局变量 for (const key in window) { try { if (window.hasOwnProperty(key) && typeof window[key] !== 'function') { traverse(window[key], [key], results, target); } } catch (e) { // 跳过无权限访问的属性 continue; } } return results; // 递归遍历对象/数组,记录路径 function traverse(obj, path, results, target) { if (obj === target) { results.push(path.join('.')); return; } if (typeof obj === 'object' && obj !== null) { if (Array.isArray(obj)) { obj.forEach((item, index) => { traverse(item, [...path, `[${index}]`], results, target); }); } else { for (const prop in obj) { if (obj.hasOwnProperty(prop)) { traverse(obj[prop], [...path, prop], results, target); } } } } } } // 调用示例:搜索"hello" const matches = searchGlobalValue("hello"); console.log("匹配的路径:", matches);
说明
- 代码会遍历
window下的自定义全局变量,跳过浏览器内置函数和受保护属性,避免触发权限报错 - 递归检查每个值,一旦找到和目标字符串完全匹配的内容,就记录它的完整访问路径
- 如果有多个位置存在目标值,会返回所有对应的路径,比如你示例中的
nacho.b[2].d
内容的提问来源于stack exchange,提问作者IMTheNachoMan
相关产品推荐
相关产品推荐

