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

遍历数组寻找最低low值:无需预设极值的替代实现方法

替代解决方案

下面是几种不需要初始化一个超大值来获取arrayvals中low属性最小值的方法:

方法1:提取所有low值后用Math.min

先通过map把数组中每个元素的low属性提取成新数组,再用扩展运算符配合Math.min直接获取最小值,代码简洁直观:

function main() {
    const WEEK_WEATHER = {
        monday: { low: 61, high: 75 },
        tuesday: { low: 64, high: 77 },
        wednesday: { low: 68, high: 80 },
        thursday: { low: 64, high: 80 },
        friday: { low: 68, high: 90 },
        saturday: { low: 62, high: 81 },
        sunday: { low: 70, high: 86 }
    };
    const arrayvals = Object.values(WEEK_WEATHER); // 直接用Object.values简化数组创建
    let day = 1;
    let highest = 0;
    // 提取所有low值并取最小
    const lowest = Math.min(...arrayvals.map(item => item.low));

    for (let i in arrayvals) {
        console.log(`Day: ${day++} | Low: ${arrayvals[i].low} | High: ${arrayvals[i].high}`);
        if (arrayvals[i].high > highest) {
            highest = arrayvals[i].high;
        }
    }
    console.log("Lowest: " + lowest + " | highest: " + highest);
}
main();

注:Object.values(WEEK_WEATHER)可以直接把对象的所有值转为数组,比手动解构更简洁,避免重复代码。

方法2:初始化lowest为数组第一个元素的low

如果能确定数组不为空,可以直接把lowest初始化为数组第一个元素的low值,再遍历数组进行比较:

function main() {
    const WEEK_WEATHER = {
        monday: { low: 61, high: 75 },
        tuesday: { low: 64, high: 77 },
        wednesday: { low: 68, high: 80 },
        thursday: { low: 64, high: 80 },
        friday: { low: 68, high: 90 },
        saturday: { low: 62, high: 81 },
        sunday: { low: 70, high: 86 }
    };
    const arrayvals = Object.values(WEEK_WEATHER);
    let day = 1;
    let highest = arrayvals[0].high; // 最高值也可以用同样方式初始化
    let lowest = arrayvals[0].low; // 初始化为第一个元素的low

    for (let i = 0; i < arrayvals.length; i++) { // 普通for循环更适合数组遍历
        console.log(`Day: ${day++} | Low: ${arrayvals[i].low} | High: ${arrayvals[i].high}`);
        
        if (arrayvals[i].low < lowest) {
            lowest = arrayvals[i].low;
        }

        if (arrayvals[i].high > highest) {
            highest = arrayvals[i].high;
        }
    }
    console.log("Lowest: " + lowest + " | highest: " + highest);
}
main();

注:如果数组可能为空,需要先判断arrayvals.length > 0再初始化,避免读取arrayvals[0]时报错。

方法3:用reduce方法计算最小值

reduce方法可以遍历数组并累积计算结果,适合这类求极值的场景:

function main() {
    const WEEK_WEATHER = {
        monday: { low: 61, high: 75 },
        tuesday: { low: 64, high: 77 },
        wednesday: { low: 68, high: 80 },
        thursday: { low: 64, high: 80 },
        friday: { low: 68, high: 90 },
        saturday: { low: 62, high: 81 },
        sunday: { low: 70, high: 86 }
    };
    const arrayvals = Object.values(WEEK_WEATHER);
    let day = 1;
    let highest = 0;
    // 用reduce迭代获取最小low值
    const lowest = arrayvals.reduce((minVal, current) => {
        return current.low < minVal ? current.low : minVal;
    }, Infinity); // 用Infinity作为初始值,比固定数值更通用

    for (let i in arrayvals) {
        console.log(`Day: ${day++} | Low: ${arrayvals[i].low} | High: ${arrayvals[i].high}`);
        if (arrayvals[i].high > highest) {
            highest = arrayvals[i].high;
        }
    }
    console.log("Lowest: " + lowest + " | highest: " + highest);
}
main();

注:Infinity表示无穷大,作为初始值适配所有可能的low数值;如果求最大值可以用-Infinity作为初始值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 06:10:20