JavaScript中如何从天气对象数组中查找最高与最低温度
实现步骤
- 遍历天气对象数组,将每个月份对应的分散温度数组合并为一个包含所有温度值的一维数组
- 对全量温度数组,使用JS内置的数值计算方法得到最高、最低值
完整可运行代码
let weather = [ { month: 'March', temperature: [2,5,4,3,7,12]}, { month: 'April', temperature: [14,15,16,19, 20]}, { month: 'May', temperature: [22,24,26,28,27]} ] // 提取所有温度值合并为一维数组,使用*flatMap*自动拍平嵌套子数组 const allTemp = weather.flatMap(item => item.temperature); // 使用*扩展运算符*将数组拆为独立数字参数,传入计算方法 const maxTemp = Math.max(...allTemp); const minTemp = Math.min(...allTemp); console.log(`最高温度:${maxTemp},最低温度:${minTemp}`); // 控制台输出结果:最高温度:28,最低温度:2
新手高频踩坑提醒
直接把数组传入
Math.max()/Math.min()是最常见的错误写法,比如Math.max(allTemp),这种写法最终会返回NaN——因为这两个方法只接受独立的数字参数,不识别数组这类引用类型。必须通过扩展运算符把数组拆分成独立的数字值,才能正常计算。
如果需要兼容不支持flatMap方法的老旧运行环境,可以替换为手动遍历收集温度的写法,计算逻辑完全一致:
const allTemp = []; weather.forEach(item => { allTemp.push(...item.temperature); }); // 后续计算maxTemp、minTemp的逻辑和上面的代码完全相同
内容的提问来源于stack exchange,提问作者Roy Fied
相关产品推荐
相关产品推荐

