查找数组中多个最大值的索引

fro*_*sty 5 javascript arrays

我有一个示例数组:

var arr = [10, 67, 100, 100];

我想找到数组中最大值的索引。

这个函数只找到一个索引:

function max(arr) {
      var max = arr[0];
      var maxIndex = 0;
      for (var i = 1; i < arr.length; i++) {
          if (arr[i] > max) {
              maxIndex = i;
              max = arr[i];
          }
      }
      return maxIndex;
 }
Run Code Online (Sandbox Code Playgroud)

如何修改它以返回最大索引数组?在上面的示例数组中,它应该返回

[2, 3].

use*_*559 3

您需要跟踪所有索引,而不是仅跟踪一个索引。尝试一下:

function max(arr) {
    var max = -Infinity;
    var maxIndices = [];
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] === max) {
          maxIndices.push(i);
        } else if (arr[i] > max) {
            maxIndices = [i];
            max = arr[i];
        }
    }
    return maxIndices;
 }
Run Code Online (Sandbox Code Playgroud)