小编典典

有没有办法在 Chrome 开发工具中自动扩展对象?

all

每次我在控制台中查看一个对象,我都想要展开它,所以每次都必须单击箭头来执行此操作会很烦人:) 是否有快捷方式或设置可以自动完成此操作?


阅读 56

收藏
2022-08-20

共1个答案

小编典典

虽然提到的解决方案JSON.stringify在大多数情况下都非常好,但它有一些限制

  • 它不能处理带有循环引用的项目,因为它console.log可以优雅地处理这些对象。
  • 此外,如果你有一棵大树,那么交互式折叠一些节点的能力可以使探索更容易。

这是一个通过创造性地(ab)使用解决上述两个问题的解决方案console.group

function expandedLog(item, maxDepth = 100, depth = 0){
    if (depth > maxDepth ) {
        console.log(item);
        return;
    }
    if (typeof item === 'object' && item !== null) {
        Object.entries(item).forEach(([key, value]) => {
            console.group(key + ' : ' +(typeof value));
            expandedLog(value, maxDepth, depth + 1);
            console.groupEnd();
        });
    } else {
        console.log(item);
    }
}

现在运行:

expandedLog({
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
})

会给你类似的东西:

输出截图

的值maxDepth可以调整到所需的级别,超出该级别的嵌套 - 扩展日志将回退到通常的 console.log

尝试运行类似的东西:

x = { a: 10, b: 20 }
x.x = x 
expandedLog(x)

在此处输入图像描述

另请注意,这console.group是非标准的。

2022-08-20