如何根据公交线路在数组中查找下一个公交站点?
解决方案
假设你有一个包含所有公交站点的数组(比如命名为allStops),要根据已知站点找到同线路同方向的下一站,按以下步骤操作:
1. 提取当前站点的关键信息
从已知站点的route数组中取出线路号、行驶方向,以及当前站的序号(注意将字符串转成数字):
// 假设已知站点为currentStop const currentRouteInfo = currentStop.route[0]; // 取第一条线路(若一个站点属于多条线路,需额外判断匹配逻辑) const targetRouteNum = currentRouteInfo._num; const targetDirection = currentRouteInfo._direction; const currentStopNum = parseInt(currentRouteInfo._stopNum, 10); const nextStopNum = currentStopNum + 1;
2. 查找下一个站点
遍历所有站点数组,找到匹配线路号、方向,且站号等于nextStopNum的站点:
const nextStop = allStops.find(stop => { // 检查站点是否属于目标线路和方向 const isTargetRoute = stop.route.some(route => route._num === targetRouteNum && route._direction === targetDirection ); // 检查站点序号是否为目标下一站 const isNextStop = stop.route.some(route => parseInt(route._stopNum, 10) === nextStopNum ); return isTargetRoute && isNextStop; }); // 结果处理 if (nextStop) { console.log('下一站:', nextStop._name); } else { console.log('当前为终点站,无下一站'); }
关键说明
- 每个站点的
route数组可能包含多条线路信息,因此要用some判断该站点是否属于目标线路和方向 _stopNum是字符串类型,必须转成数字后再做数值比较- 若当前站点是线路首站(
_stopNum: "1"),下一站就是_stopNum: "2"的站点;若当前是终点站,find会返回undefined,需做无结果处理
内容的提问来源于stack exchange,提问作者RoLedXD
相关产品推荐
相关产品推荐

