Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
Google chrome 有没有办法在Chrome DevTools中搜索控制台记录的对象中的特定值?_Google Chrome_Google Chrome Devtools - Fatal编程技术网

Google chrome 有没有办法在Chrome DevTools中搜索控制台记录的对象中的特定值?

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

我想对一个对象进行console.log()操作,并在该对象中搜索特定值。这可能吗


注意:我试图搜索的对象是巨大的多维对象,因此扩展每个字段并执行简单的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中有一种简单而自然的方法来实现这一点,但这也行得通。非常感谢。不,一只鹳正好把它掉在我的腿上。:)不客气。我本来打算用这个完全相同的问题开始另一篇文章,这个解决方案让我大吃一惊。这个脚本将在我的系统中运行。非常感谢。下面是脚本的一个小更新,它可以防止循环对象分配时出现无休止的循环,这很酷。我想我会重新审视这一点,并添加一些“读者练习”项目……呵呵。好电话。比另一个答案简单得多。