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

Node.js使用Map构建机场有向图时Pramp编辑器输出空Map问题咨询

问题原因与解决方案

1. Map输出为空的根本原因

你遇到的空Map问题不是Pramp编辑器导致的,是代码本身存在两处语法和逻辑错误:

  • 函数名大小写不匹配:你定义的添加节点函数名为addnode(小写n),但调用时写的是addNode(大写N),二者无法匹配
  • 核心初始化逻辑缩进错误:addEdge函数定义、airports.forEach、routes.forEach这三段代码全被写到了addnode函数内部,而你从头到尾没有调用过addnode,所有初始化逻辑根本没有执行,Map自然是空的。

2. 代码语法解释

针对你问的routes.forEach(route => addEdge(...route))这行:

  • =>是箭头函数语法,是普通匿名函数的简写形式,此处等价于:
    routes.forEach(function(route) {
      addEdge(...route)
    })
    
    作用是遍历routes数组里的每一条航线数据,对每条航线执行添加边的操作。
  • 三个点...是JavaScript的扩展运算符,作用是把数组拆成独立的参数,比如当前遍历到的航线是['PHX','LAX'],...route就等价于'PHX','LAX'两个参数,和手动写addEdge(route[0], route[1])效果完全一致,写法更简洁。

3. 修正后的可运行代码

// 数据定义
const airports = 'PHX BKK OKC JFK LAX MEX EZE HEL LOS LAP LIM'.split(' ');
const routes = [
  ['PHX','LAX'],
  ['PHX','JFK'],
  ['JFK','OKC'],
  ['JFK','HEL'],
  ['MEX','LAX'],
  ['MEX','BKK'],
  ['MEX','LIM'],
  ['MEX','EZE'],
  ['LIM','BKK'],
];

// 图初始化
const adjacencyList = new Map();

// 添加节点函数
function addNode(airport){
  adjacencyList.set(airport,[]);
}

// 添加无向边函数
function addEdge(origin,destination){
  adjacencyList.get(origin).push(destination);
  adjacencyList.get(destination).push(origin);
}

// 执行图构建
airports.forEach(addNode);
routes.forEach(route => addEdge(...route))

console.log(adjacencyList);

修正后再在Pramp编辑器运行就能得到你预期的Map结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:15:03