JavaScript实现:从30英里范围内的客户城市结果中筛选距离最近的城市并输出指定结果
找出范围内最近的客户城市
没问题,我帮你调整代码来实现只返回距离最近的那个城市。核心思路是在循环过程中始终跟踪当前找到的最近城市,每次遇到符合条件的城市时,对比它和当前记录的最近城市的距离,更新更近的那个,最后再输出结果。
修改后的代码实现
// 初始化变量,用来保存当前最近的城市信息 let closestCity = null; for (let i = 0; i < origins.length; i++) { const results = response.rows[i].elements; for (let j = 0; j < results.length; j++) { const distance = results[j].distance.value; // 仅处理30英里(48280米)范围内的城市 if (distance < 48280) { const currentCity = { cityName: origins[i], cityDistance: distance }; // 如果是第一个符合条件的城市,或者当前城市距离更近,就更新最近城市记录 if (!closestCity || currentCity.cityDistance < closestCity.cityDistance) { closestCity = currentCity; } } } } // 循环结束后,输出指定格式的结果 if (closestCity) { console.log(`${closestCity.cityName}城市是最近的(${closestCity.cityDistance}米)`); } else { console.log("30英里范围内没有找到客户城市"); }
关键调整点说明
- 初始化跟踪变量:在循环外定义
closestCity,初始值为null,用来存储当前找到的最近城市对象。 - 距离对比逻辑:每次找到符合条件的城市时,检查
closestCity是否为空(即还没找到任何符合条件的城市),或者当前城市的距离比closestCity的距离更小,如果是,就更新closestCity。 - 作用域优化:把原来的
var换成let/const,避免变量提升导致的潜在问题,让代码更安全。 - 结果输出:循环结束后统一输出结果,而不是在循环里逐个打印,确保只输出最近的那个城市。
内容的提问来源于stack exchange,提问作者Sam Skirrow
相关产品推荐
相关产品推荐

