Google chrome 有没有办法在Chrome DevTools中搜索控制台记录的对象中的特定值?
我想对一个对象进行console.log()操作,并在该对象中搜索特定值。这可能吗Google chrome 有没有办法在Chrome DevTools中搜索控制台记录的对象中的特定值?,google-chrome,google-chrome-devtools,Google Chrome,Google Chrome Devtools,我想对一个对象进行console.log()操作,并在该对象中搜索特定值。这可能吗 注意:我试图搜索的对象是巨大的多维对象,因此扩展每个字段并执行简单的Ctrl+F查找并不理想。下面的代码将类似于您正在查找的console对象的内容添加为 console.logSearchingForValue 广度优先搜索、匹配等效的“JSON”值、正确处理NAN、返回多个位置以及使数字索引表达式不被引用,这些都留给读者作为练习: 交换不同的平等定义已经很容易了 var searchHaystack = fu
注意:我试图搜索的对象是巨大的多维对象,因此扩展每个字段并执行简单的Ctrl+F查找并不理想。下面的代码将类似于您正在查找的console对象的内容添加为
console.logSearchingForValue
广度优先搜索、匹配等效的“JSON”值、正确处理NAN、返回多个位置以及使数字索引表达式不被引用,这些都留给读者作为练习:
交换不同的平等定义已经很容易了
var searchHaystack = function(haystack, needle, path, equalityFn, visited) {
if(typeof haystack != "object") {
console.warn("non-object haystack at " + path.join("."));
}
if(visited.has(haystack))
return [false, null];
for(var key in haystack) {
if(!haystack.hasOwnProperty(key))
continue;
if(equalityFn(needle, haystack[key])) {
path.push(key);
return [true, path];
}
visited.add(haystack);
if(typeof haystack[key] == "object") {
var pCopy = path.slice();
pCopy.push(key);
var deeper = searchHaystack(haystack[key], needle, pCopy, equalityFn, visited);
if(deeper[0]) {
return deeper;
}
}
}
return [false, null];
}
var pathToIndexExpression = function(path) {
var prefix = path[0];
path = path.slice(1);
for(var i = 0; i < path.length; i++) {
if(typeof path[i] == "string")
path[i] = "\"" + path[i] + "\"";
}
return prefix + "[" + path.join("][") + "]"
}
console.logSearchingForValue = function(haystack, needle) {
this.log("Searching");
this.log(haystack);
this.log("for");
this.log(needle);
var visited = new Set();
var strictEquals = function(a,b) { return a === b; };
var result = searchHaystack(haystack, needle, ["<haystack>"], strictEquals, visited);
if(result[0]) {
this.log("Found it!");
this.log(pathToIndexExpression(result[1]));
}
else {
this.log("didn't find it");
}
}
var searchHaystack=函数(haystack、针、路径、等式fn、已访问){
if(干草堆的类型!=“对象”){
console.warn(“位于”+path.join(“.”)的非对象干草堆);
}
如果(访问了haystack)
返回[false,null];
for(haystack中的var键){
如果(!haystack.hasOwnProperty(键))
继续;
if(相等Fn(针、干草堆[键]){
路径。按(键);
返回[true,path];
}
已访问。添加(haystack);
if(haystack[key]=“object”的类型){
var pCopy=path.slice();
pCopy.push(按键);
var Deeph=搜索草堆(草堆[key],针,pCopy,equalityFn,已访问);
if(更深的[0]){
回归更深;
}
}
}
返回[false,null];
}
var pathToIndexExpression=函数(路径){
变量前缀=路径[0];
path=path.slice(1);
对于(变量i=0;i
JSON.stringify(myObject)
这将输出对象作为字符串表示
Ctrl+f
你写了那个脚本吗?这简直是胡说八道(太棒了)。我希望在devtools中有一种简单而自然的方法来实现这一点,但这也行得通。非常感谢。不,一只鹳正好把它掉在我的腿上。:)不客气。我本来打算用这个完全相同的问题开始另一篇文章,这个解决方案让我大吃一惊。这个脚本将在我的系统中运行。非常感谢。下面是脚本的一个小更新,它可以防止循环对象分配时出现无休止的循环,这很酷。我想我会重新审视这一点,并添加一些“读者练习”项目……呵呵。好电话。比另一个答案简单得多。