如何使用for循环获取JavaScript数组中最大值对应的索引
实现思路
你当前的代码仅记录了遍历过程中最大值的数值,没有存储该数值对应的数组索引,所以只要新增一个变量同步记录最大值对应的索引即可满足需求。另外原代码将最大值初始值设为0存在边界缺陷,如果输入数组全为负数会返回错误结果,优化时可把初始值设为数组第一个元素的数值和对应索引。
调整后的代码
function highestNumber(array) { // 边界判断,避免空数组报错 if (array.length === 0) return -1; let biggerNumber = array[0]; let maxIndex = 0; for (let index = 0; index < array.length; index += 1) { if (array[index] > biggerNumber) { biggerNumber = array[index]; // 同步更新最大值对应的索引 maxIndex = index; } } return maxIndex; } // 测试调用,返回4符合预期 highestNumber([2, 3, 6, 7, 10, 1]);
更简洁的内置方法实现
如果不需要手动遍历,可以直接组合JS内置方法实现相同效果,逻辑是先找到数组最大值,再匹配最大值第一次出现的索引:
function highestNumber(array) { if (array.length === 0) return -1; return array.indexOf(Math.max(...array)); }
注意:如果数组中有多个相同的最大值,上述两种实现都会返回第一个最大值对应的索引,符合常规业务需求。
内容的提问来源于stack exchange,提问作者Andrey
相关产品推荐
相关产品推荐

