Javascript如何在数组中找到最大数字,并记录位置

时间:2016-03-29 04:13:44

标签: javascript arrays

我想找到最简洁的方法来查找数组中最大数字的索引。 例: var array = [0,6,7,7,7];
该函数应返回[2,3,4]

注意:它与Return index of greatest value in an array不同 为什么?那里的答案只返回最大的答案之一。例如var array = [0,6,7,7,7]将返回2或4。

更新: 不少人将此标记为重复问题。它不是!我解释了上面注释中的差异。在Return index of greatest value in an array中,我所要求的答案在哪里 我的第一个问题几乎立即被投票,我也感到沮丧。

更新:在Return index of greatest value in an array

找到另一个答案

3 个答案:

答案 0 :(得分:1)

function findLargestOccurances(){
  //Sort the initial array to make it easier
  var arr = [0,6,7,7,7].sort();
  //The largest element is always at the end
  var largest = arr[arr.length-1];
  //The return array will hold positions of the largest element in the array
  var retArr = [];
  //Find occurances of the largest # in the array
  arr.forEach(function(ele,idx){
    //If the current element is the largest one, record the occurance index
    if (ele === largest)
      retArr.push(idx);
  });
  //Log the return array, open your browsers console to see the result!
  console.log(retArr);
}

findLargestOccurances();

此功能也适用于混乱的元素!我在这里创建了一个代码笔:

http://codepen.io/ShashankaNataraj/pen/WwENLb?editors=1011

答案 1 :(得分:0)

这非常接近Return index of greatest value in an array

但是如果你想获取所有索引,你可以迭代数组,当前项目等于argmax时将当前索引推送到max数组,直到找到时刻;或者当您找到更多项目时更新maxargmax

var max = -Infinity, argmax = [];
for(var i=0; i<array.length; ++i)
  if(array[i] > max) max = array[i], argmax = [i];
  else if(array[i] === max) argmax.push(i);
argmax; // [2,3,4]

答案 2 :(得分:0)

尝试以下代码。它会为您提供所需的输出

&#13;
&#13;
 var array1=[0,6,7,7,7]; 
 var array2=[]; 
 var i = Math.max.apply(Math, array1);
     
     for (var x = 0; x < array1.length; x++) {
           
           if (array1[x] == i) {
              
                 array2.push(x);               
                 
           }
        }
    
    var z = array2.toString();
    var_dump(z);                                   
                                       
&#13;
&#13;
&#13;