将Map作为参数传递给JavaScript中的另一个函数

时间:2017-09-20 12:42:28

标签: javascript reactjs dictionary

我刚接受了面试测试,其中我必须使用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)中的实施更改为stationIdkey value。然后,当我将此tracingMap传递给另一个函数时,它会正常工作。

由于我在JavaScript方面相对缺乏经验,如果你能告诉我我做错了什么,我将非常感激。我相信我在某处有错误的理解:)。

0 个答案:

没有答案