2017-01-04 4 views
0

Мне нужно получить индекс наибольшего значения в соединениях массива. Этот массив используется для вывода значений в таблицу, я должен иметь возможность затем установить ячейку в этой таблице, причем наибольшее значение будет красным. Вот то, что я до сих пор:Как получить индекс наибольшего значения в массиве? JavaScript

cells[0].innerHTML = connections[0]; 
cells[1].innerHTML = connections[1]; 
cells[2].innerHTML = connections[2]; 
cells[3].innerHTML = connections[3]; 
cells[4].innerHTML = connections[4]; 
cells[5].innerHTML = connections[5]; 
cells[6].innerHTML = connections[6]; 
cells[7].innerHTML = connections[7]; 
cells[8].innerHTML = connections[8]; 
cells[9].innerHTML = connections[9]; 

cells[].style.backgroundColor = "red"; 

Как бы я идти о поиске индекс самого большого значения в массиве соединений и установить положение клеток [] к нему. Я попытался использовать цикл и оператор if, чтобы найти значение, но у меня возникли проблемы с получением этого значения из цикла.

+1

Возможный дубликат [JavaScript: мин и макс значения массива] (ч ttp: //stackoverflow.com/questions/1669190/javascript-min-max-array-values) – MatthieuLemoine

ответ

3

Вы можете использовать следующее:

var largest_number = Math.max.apply(Math, my_array); 
var largest_index = my_array.indexOf(largest_number); 
+2

Но как насчет индекс? –

+0

мои извинения, забыли индекс. скорректировал мой ответ. –

+1

Это сработало, спасибо! –

1

Вы можете получить максимальное значение, просто применив Math.max к массиву. Но если вам нужен его индекс, вам нужно сделать немного больше работы.

Самый простой подход, чтобы сделать что-то вроде этого:

connections.indexOf(Math.max.apply(Math, connections)) 

Если вы хотите быть более эффективным (так, что пересекает массив в два раза), вы можете написать свой собственный сокращение:

maxConnIndex = connections.reduce(function(curMax, curVal, curIdx) { 
    let [maxVal, maxIdx] = curMax 
    if (curVal > maxVal) { 
     maxVal = curVal 
     maxIdx = curIdx 
    } 
    return [maxVal, maxIdx] 
    }, [connections[0],0])[1]; 
+0

Извините, если было неясно, не самое лучшее в объяснении такого рода вещей, но да, мне нужен индекс наибольшего значения. Ответ выше, похоже, работал правильно, но спасибо в любом случае :) –

0

Простой в следовать, эффективный код:

function maxIndex(array) { 
    var idx, max=-Infinity; 
    for (var i=array.length;i--;) { 
    if (array[i]>max) { 
     max = array[i]; 
     idx = i; 
    } 
    } 
    return idx; 
} 
Смежные вопросы