图算法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
相关产品推荐
相关产品推荐

