You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

图算法addVertex方法添加含空格顶点时键带引号问题咨询

解决对象键带空格时控制台显示引号的问题

问题原因

你看到的引号是JavaScript控制台对对象键的默认格式化结果:当对象的键不是有效的JavaScript标识符(比如包含空格、特殊字符,或者以数字开头),控制台就会用引号包裹键名来显示。但这只是控制台的展示形式,实际你的adjacencyList里的键Hong Kong本身并没有引号,完全不影响代码逻辑——比如你依然可以通过g.adjacencyList['Hong Kong']正常访问这个顶点的邻接列表。

自定义输出实现无引号显示

如果希望控制台输出时不带引号,你可以给Graph类添加一个自定义方法来格式化输出内容,比如print():

class Graph {
    constructor() {
        this.adjacencyList = {}
    }

    addVertex(vertex) {
        if (!this.adjacencyList[vertex]) {
            this.adjacencyList[vertex] = []
        }
    }

    addEdge(vertex1, vertex2) {
        if (this.adjacencyList[vertex1]) {
            this.adjacencyList[vertex1].push(vertex2)
        }
        if (this.adjacencyList[vertex2]) {
            this.adjacencyList[vertex2].push(vertex1)
        }
    }

    // 自定义打印方法
    print() {
        let output = "Graph {\n  adjacencyList: {\n"
        Object.entries(this.adjacencyList).forEach(([key, value]) => {
            output += `    ${key}: [ ${value.map(v => `'${v}'`).join(', ')} ],\n`
        })
        // 去掉最后一个多余的逗号并补全结构
        output = output.slice(0, -2) + "\n  }\n}"
        console.log(output)
    }
}

let g = new Graph()
g.addVertex("Tokyo")
g.addVertex("Singapore")
g.addVertex("Malaysia")
g.addVertex("Hong Kong")
g.addVertex("Australia")
g.addEdge("Tokyo", "Singapore")
g.addEdge("Singapore", "Malaysia")
g.addEdge("Singapore", "Hong Kong")
g.addEdge("Hong Kong", "Australia")

// 调用自定义打印方法替代console.log(g)
g.print()

运行后控制台输出会变成:

Graph {
  adjacencyList: {
    Tokyo: [ 'Singapore' ],
    Singapore: [ 'Tokyo', 'Malaysia', 'Hong Kong' ],
    Malaysia: [ 'Singapore' ],
    Hong Kong: [ 'Singapore', 'Australia' ],
    Australia: [ 'Hong Kong' ]
  }
}

这样就实现了你想要的无引号键名显示效果。

内容的提问来源于stack exchange,提问作者Jessica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:31:27