JavaScript如何将多个独立数组结果转换为指定格式的单个对象数组
问题原因
你现在的代码有两个核心问题:
- 存储结果的
closestCities被初始化为对象类型,和你需要的数组类型不匹配 console.log放在了for循环内部,每筛选到一个符合条件的城市就会打印一次,才会出现多个独立输出的情况,同时你用循环下标j作为对象的键,后续转换也会出现空值隐患。
修改后的代码
// 初始化结果为数组 const closestCities = []; for (let j = 0; j < results.length; j++) { // 保留30英里(48280米)的筛选条件 if(results[j].distance.value < 48280) { const cityDistance = results[j].distance.value; const cityName = origins[i]; // 用push方法往数组末尾追加元素,避免空元素问题 closestCities.push({ cityName, // 如果需要英里单位,替换为 Math.round(cityDistance / 1609.34) 即可 cityDistance }); } } // 循环结束后统一打印完整的结果数组 console.log(closestCities);
可选优化说明
- 把原有代码里的
var替换为let/const,可以避免变量提升带来的意外作用域问题 - 如果需要距离单位为英里,直接按注释里的公式做换算即可得到整数英里值
内容的提问来源于stack exchange,提问作者Sam Skirrow
相关产品推荐
相关产品推荐

