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

TypeScript如何定义键为字符串、值为字符串数组的Graph对象类型

实现方法

类型定义

你的Graph结构是典型的字符串键、字符串数组值的映射结构,直接用TypeScript内置工具类型定义即可:

type Graph = Record<string, string[]>;

数组转换逻辑

定义完类型后,可以写一个工具函数把输入的roads数组转换成符合要求的Graph结构,逻辑如下:

  • 初始化空的Graph实例作为返回结果
  • 遍历每一条路径字符串,用'-'拆分出起点和终点
  • 给对应起点的连通数组追加终点即可

完整可运行代码:

type Graph = Record<string, string[]>;

function buildGraph(roads: string[]): Graph {
  const graph: Graph = {};
  for (const road of roads) {
    // 拆分起点终点
    const [from, to] = road.split('-');
    // 不存在该起点的条目时先初始化空数组
    if (!(from in graph)) {
      graph[from] = [];
    }
    graph[from].push(to);

    // 👉 如果道路是双向可通行的(大部分场景下道路都是无向的),放开下面注释即可同时添加反向连通关系
    // if (!(to in graph)) graph[to] = [];
    // graph[to].push(from);
  }
  return graph;
}

// 调用示例
const roads = [
  "Alice's House-Bob's House",
  "Alice's House-Cabin",
  "Alice's House-Post Office",
];
const myGraph = buildGraph(roads);
// 运行后myGraph的结构和你给出的预期示例完全一致

注意:如果你的地名本身包含'-'字符,这个简单的拆分逻辑会出错,这种场景请更换不会和地名冲突的分隔符(比如'|'、'->'等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:15:54