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

如何在JavaScript数组指定索引区间内使用reduce获取最大值索引?

限定索引区间内找出数组最大值的索引

我在网站中设置了一组输入框,用户输入的数值会存入数组inputtedVals。目前有一段JavaScript代码可以找出数组中的最大值,并将其在原数组的索引位置存储到变量HighValPos中:

var HighValPos = inputtedVals.reduce((highestInd, TheValue, TheValueInd) => {
    return TheValue > inputtedVals[highestInd] ? TheValueInd : highestInd;
}, 0);

现在需要修改这段代码,让它仅对索引值在firstEl(值为0)到lastEl(值为6)指定区间内的数组元素应用上述.reduce()逻辑,请问该如何修改?


解决方案

方法一:在reduce回调中直接过滤区间外元素

在.reduce()的回调函数里添加索引判断,跳过区间外的元素,同时将初始值设为区间的起始索引firstEl,确保基准值从区间内的第一个元素开始:

var firstEl = 0;
var lastEl = 6;
var HighValPos = inputtedVals.reduce((highestInd, TheValue, TheValueInd) => {
    // 跳过区间外的元素,直接返回当前记录的最大索引
    if (TheValueInd < firstEl || TheValueInd > lastEl) {
        return highestInd;
    }
    // 区间内元素参与最大值比较逻辑
    return TheValue > inputtedVals[highestInd] ? TheValueInd : highestInd;
}, firstEl); // 初始值设为区间起始索引,避免基准值不在目标区间内

方法二:先截取目标区间子数组再处理

先通过slice()截取原数组中指定区间的子数组,找到子数组内最大值的索引后,再转换为原数组的对应索引:

var firstEl = 0;
var lastEl = 6;
// slice左闭右开,所以第二个参数是lastEl + 1,确保包含索引为lastEl的元素
var subArray = inputtedVals.slice(firstEl, lastEl + 1);
// 找出子数组中最大值的索引
var subHighInd = subArray.reduce((highestInd, val, ind) => {
    return val > subArray[highestInd] ? ind : highestInd;
}, 0);
// 转换为原数组的索引
var HighValPos = subHighInd + firstEl;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:03:26