javascript - 如何编写一个函数来查找数组中最大整数的索引?
问题描述
我正在尝试编写一个函数来查找数组中最大数字的索引,但是我当前的函数因数组中存在负数而被破坏。这是我到目前为止的代码。
export let maxIndex = (a: number[]): number => {
let biggest = -9000000000; // use to keep track of largest element
if (a.length === 0) {
return -1;
} else {
for (let i = 0; i < a.length; i++) {
if (a[i] > biggest) {
biggest = a[i];
}
}
}
return a[biggest];
};
解决方案
您正在返回找到的最大元素return a[biggest];
的索引处的数字(例如,将返回解析为,这对于您要完成的工作没有意义)。[0, 2, 4, 6]
a[6]
undefined
您不仅需要跟踪迄今为止发现的最大数字,还需要跟踪最后发现的最大数字的索引。此外,如果您将索引变量初始化为-1
,则无需进行初始if
测试:
const maxIndex = (a) => {
let biggestNum = -Infinity; // use to keep track of largest element
let biggestIndex = -1;
for (let i = 0; i < a.length; i++) {
if (a[i] > biggestNum) {
biggestNum = a[i];
biggestIndex = i;
}
}
return biggestIndex;
};
console.log(maxIndex([0, -1, -2]));
console.log(maxIndex([]));
console.log(maxIndex([30, 50, 40]));
另一种方法是传播到Math.max
:
const maxIndex = (a) => {
const max = Math.max(...a);
return a.indexOf(max);
};
console.log(maxIndex([0, -1, -2]));
console.log(maxIndex([]));
console.log(maxIndex([30, 50, 40]));
推荐阅读
- eclipse - Eclipse CDT 项目资源管理器 - 项目上下文菜单(项目右键菜单)-> 如何禁用基于布尔值的“构建配置”菜单项?
- java - 在Android中的同一按钮上停止手电筒闪烁
- python - 在 Pandas csv 文件操作中使用字符串文字而不是标题名称
- onelogin - OneLogin 凭证不适用于 API-V2
- amazon-web-services - 有没有办法在对象 lambda 访问点的 lambda 函数中获取调用方 IP?
- html - 我如何删除html中两张卡之间的空格
- arrays - 可以将带有附加字段的对象推入类型化数组
- spring - '错误创建bean名称'错误弹簧框架
- dax - 在dax中起作用以强制间接关系?
- c# - 最后字符为空白时的滚动问题