2016-03-29 29 views
0

我想找到最簡潔的方式來查找數組中最大數字的索引。 例子: var array = [0,6,7,7,7];
函數應該返回[2,3,4]Javascript如何查找數組中的最大數字並記錄位置

注:這是不一樣的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

+2

分享你已經嘗試了什麼。 –

+3

看看這個問題:http://stackoverflow.com/questions/11301438/return-index-of-greatest-value-in-an-array –

+0

我看到其他人發佈的問題沒有顯示工作,他們有很多很多票。 – codeman

回答

0

這是如此接近Return index of greatest value in an array

但是,如果您想要獲取所有索引,則只需迭代該數組,噹噹前項目等於max時,將當前索引推送到argmax陣列,該數目是直到此刻發現的最大數目;或者在找到更大的物品時更新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] 
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

0

嘗試下面的代碼。它會給你所需的輸出

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);