📅  最后修改于: 2023-12-03 15:32:23.695000             🧑  作者: Mango
在 JavaScript 中,我们经常需要查找数组中的最大值。但是,如果数组中有多个最大值,我们也需要找到它们的所有索引。本文将介绍如何使用 JavaScript 查找数组中的所有最大数索引。
使用 Math.max() 函数可轻松找到数组中的最大值。但是,如果数组中有多个最大值,此方法无法找到它们的索引。我们可以使用 for 循环来解决这个问题。代码如下:
function findAllMaxIndex(arr) {
var max = -Infinity;
for (var i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
var result = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] === max) {
result.push(i);
}
}
return result;
}
我们先用 for 循环查找最大值,然后遍历整个数组,将所有最大值的索引推入结果数组中。该函数返回一个包含所有最大值索引的数组。
我们可以使用 reduce() 和箭头函数来查找数组中所有的最大值。代码如下:
const findAllMaxIndex = (arr) =>
arr.reduce(
(result, val, idx) =>
val > arr[result[0]] ? [idx] : val === arr[result[0]] ? [...result, idx] : result,
[0]
).slice(1);
这行代码看起来很难理解,我们来逐步分解一下。
首先,我们使用箭头函数作为 reduce() 的回调函数。该函数接收两个参数:result 和 val。
该函数返回一个新的结果数组。在该函数中,我们使用了一些运算符和数组方法:
最后,我们使用 slice() 将第一个元素去掉,该元素只是初始化结果数组 [0]。
无论你选择哪种方法,它们都能有效地查找给定数组中所有的最大值索引。
本文介绍了两种查找数组中所有最大值的方法。在这些方法中,我们都使用了 JavaScript 数组的常用方法和特性,例如 for 循环、reduce() 和箭头函数。使用这些方法只需很少的代码,即可找到数组中所有的最大值索引。