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

如何重构window.setMinMax函数以减少代码行数?

重构后的代码
window.setMinMax = function(min, max, seriesName, clickedYAxis) {
    const FruitSeries = ["Apple", "Orange", "Grape"];
    const NutSeries = ["Almond", "Walnut"];
    const chart = Highcharts.charts[Highcharts.charts.length - 1]; // 缓存当前图表实例

    // 通用函数:根据筛选条件处理series,设置y轴极值
    const setSeriesExtremes = (filterFn) => {
        chart.series.forEach(series => {
            if (filterFn(series)) {
                const yAxisIndex = series.yAxis.index;
                chart.yAxis[yAxisIndex].setExtremes(min, max);
            }
        });
    };

    let targetSeries;
    if (FruitSeries.includes(seriesName)) {
        targetSeries = FruitSeries;
    } else if (NutSeries.includes(seriesName)) {
        targetSeries = NutSeries;
    }

    if (targetSeries) {
        // 处理水果或坚果系列:筛选名称在目标数组中的series
        setSeriesExtremes(series => targetSeries.includes(series.name));
    } else {
        // 处理其他系列:匹配名称和指定Y轴索引
        setSeriesExtremes(series => 
            series.name === seriesName && 
            series.yAxis.userOptions.ChartIndex === clickedYAxis
        );
    }
};

核心优化说明

  • 缓存图表实例:将重复调用的Highcharts.charts[chartIndex]存为chart变量,减少冗余索引访问,同时提升代码可读性与性能。
  • 提取通用处理逻辑:setSeriesExtremes函数封装了遍历series、条件判断、设置y轴极值的核心流程,所有分支复用该函数,彻底消除if/else if中的重复嵌套代码。
  • 简化分支判断:先统一确定需要处理的目标系列数组,再通过同一个通用函数执行操作,避免重复编写forEach嵌套逻辑。
  • 语法简化:使用箭头函数替代传统匿名函数,精简代码结构;用const/let替代var,提升变量作用域安全性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:15:08