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

如何从Google Maps API的字符串数组中提取整数?附行程时长示例

从Google Maps API时长字符串中提取整数的解决方案

嘿,我懂你现在的需求——从Google Maps API返回的像"34 min"这种行程时长字符串里抠出整数部分,对吧?结合你贴的代码片段,我给你几个实用的解决办法:

方法1:用正则表达式提取(最稳健)

正则表达式能精准匹配字符串里的数字部分,不管后面的单位是"min"、"hour"甚至其他格式,都能生效。

在你的循环里,拿到API返回的时长字符串后,这么处理:

// 从API获取时长文本,比如"34 min"
const durationText = results[j].duration.text;
// 匹配所有数字字符,转成整数
const durationNum = parseInt(durationText.match(/\d+/)[0], 10);

简单解释下:/\d+/是匹配一个或多个数字的正则,match()会返回匹配到的数组,取第一个元素就是纯数字字符串,再用parseInt()转成整数(第二个参数10是指定十进制,避免意外解析成八进制)。

把这个逻辑整合到你的现有代码里,大概是这样:

for (var i = 0; i < originList.length; i++) {
  var results = response.rows[i].elements;
  geocoder.geocode({ 'address': originList[i] }, showGeocodedAddressOnMap(false));
  for (var j = 0; j < results.length; j++) {
    geocoder.geocode({ 'address': destinationList[j] }, showGeocodedAddressOnMap(true));
    // 提取时长数字
    const durationText = results[j].duration.text;
    const durationMinutes = parseInt(durationText.match(/\d+/)[0], 10);
    // 更新输出内容
    outputDiv.innerHTML += originList[i] + ' to ' + destinationList[j] + ': ' + durationText + '(提取的数字:' + durationMinutes + ')<br>';
  }
}

方法2:拆分字符串取第一部分(简单但有局限)

如果能确定API返回的格式永远是「数字 + 空格 + 单位」,也可以用split()拆分字符串,直接取第一部分转成整数:

const durationText = results[j].duration.text;
const durationNum = parseInt(durationText.split(' ')[0], 10);

这个方法更简洁,但要注意:如果API返回的格式发生变化(比如没有空格、数字位置改变),这个方法就会失效,所以不如正则表达式稳健。

额外推荐:直接用API的数值型时长(最靠谱)

其实Google Maps Distance Matrix API还提供了duration.value字段,它是以秒为单位的整数值,完全不需要处理字符串,直接用这个字段更准确:

// 获取秒数,转成分钟就除以60取整
const durationSeconds = results[j].duration.value;
const durationMinutes = Math.floor(durationSeconds / 60);

这个方法是我最推荐的,因为它避开了字符串解析的所有潜在问题,直接用API给出的结构化数据,可靠性拉满。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:28:11