2017-01-04 10 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の?:分&最大アレー値]の可能な重複(H 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; 
} 
関連する問題