如何重构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
相关产品推荐
相关产品推荐

