我刚接受了面试测试,其中我必须使用ReactJS构建路线建议功能。长话短说,我试图使用Dijkstra算法找到网络中两个火车站之间的最短路径。
在我的实现中,我维护了一个tracingMap
,它是一个Map
对象,它将一个站点X存储为密钥。此Map
的值是另一个站Y,它是X的邻居,它位于从始发站到X的最短路径上。我的目标是递归调用tracingMap.get(destStation)
而destStation != origStation
为最后,为了重建从始发站到目的地站的最短路径。
骨架如下:
// Store all the StationNode using stationId as key
let stationGraph = new Map();
function findShortestPath(origStationId, destStationId) {
let tracingMap = new Map();
... perform the Dijkstra's algorithm ...
return buildRoute(tracingMap, origStationId, destStationId);
}
function buildRoute(tracingMap, origStationId, destStationId) {
...
}
这是我的问题。我有一个StationNode
类,它是我自己的自定义对象,用于实现工作站图。最初,我尝试将此类用作key
的{{1}}和value
。我尝试在tracingMap
函数的末尾使用console.log(tracingMap)
来确保地图已正确更新,我可以看到我添加的所有条目都很好。我甚至试图将findShortestPath()
称为10000%,确保我能获得所需的价值。
但是,当console.log(tracingMap.get(destStationNode))
到达tracingMap
函数时,buildRoute()
会返回tracingMap.get(stationGraph.get(destStationId))
。即使undefined
仍显示所有条目仍在那里,我也无法获得任何值。
最后,我必须将console.log(tracingMap)
中的实施更改为stationId
和key
value
。然后,当我将此tracingMap
传递给另一个函数时,它会正常工作。
由于我在JavaScript方面相对缺乏经验,如果你能告诉我我做错了什么,我将非常感激。我相信我在某处有错误的理解:)。