18

重複の可能性:
JavaScript 配列に含まれる最大数を見つけるにはどうすればよいですか?

このコードを機能させるのに問題があります。私はそれを理解しようとしてしばらくそれに取り組んできました。コンソールを見ると、0 しか表示されません。何が間違っていましたか?

これが私のコードです:

var array = [3 , 6, 2, 56, 32, 5, 89, 32];
var largest= 0;

for (i=0; i<=largest;i++){
    if (array>largest) {
        var largest=array[i];
    }
}

console.log(largest);
4

6 に答える 6

35
var arr = [3, 6, 2, 56, 32, 5, 89, 32];
var largest = arr[0];

for (var i = 0; i < arr.length; i++) {
    if (largest < arr[i] ) {
        largest = arr[i];
    }
}
console.log(largest);
  • 定義する必要がありiます。そうしないと、グローバル変数になります。
  • ループ内で maximum を再定義しないでください。
  • 配列をループしているので、i < array.length代わりに. を使用しi <= largestます。
  • 配列内の各項目を と比較しているので、代わりにlargest使用しますif(largest < array[i])if(array > largest)
  • すべての数値が負の場合はどうなるでしょうか。
  • arrayArray(配列コンストラクター) に似すぎているため、変数名としては不適切です。arr代わりに試してください。

一発ギャグ:

var largest = Math.max.apply(0, array);

詳細はこちら: 3 つの数値の Javascript max() 関数

于 2012-12-10T02:38:56.150 に答える
20

以下のコードは修正されており、動作するはずです。問題は、この行if (array>largest) {で配列のインデックスを提供していなかったことです。コードをこれif (array[i]>largest) {に変更することで機能します。if ステートメント[i]の末尾にを追加したことに注意してください。array

var array = [3 , 6, 2, 56, 32, 5, 89, 32];
var largest= 0;

for (i=0; i<=largest;i++){
    if (array[i]>largest) {
        var largest=array[i];
    }
}




console.log(largest);
于 2012-12-10T02:36:45.433 に答える
16

たった1行:)

var array = [3 , 6, 2, 56, 32, 5, 89, 32],
    largest = array.sort((a,b)=>a-b).reverse()[0];

またはさらに良い

...
    largest = array.sort((a,b)=>a-b)[array.length - 1];

UPD、たとえば 9 を配列に追加すると、上記のすべてのコードがうまくいきません。デフォルトでは、並べ替えの文字列として扱われる数字が、より良いバージョンがあるためです。

var array = [3 , 6, 2, 56, 32, 5, 89, 32, 9], largest;
array.sort(function(a, b) {
   largest = a > b ? a: b;
});

ただし、forEachコメントで提案されているパフォーマンス上のループの方が優れています http://jsperf.com/array-sorting-javascript-stack

UPD2、わかりました。上記のコードにはいくつかの悪い部分が含まれているため、期待どおりに動作しません。別の試み:

array.sort(function(a, b) {
  return a - b;
});
largest = array[array.length - 1];
于 2012-12-10T02:55:08.860 に答える
4

小さな間違いがいくつかあります。初め:

if (array>largest) {

代わりに次のようにする必要があります。

if ( array[i]>largest) {

2番:

for ( i = 0; i <= largest; i++) {

する必要があります

for (i = 0; i <= array.length; i++) {
于 2012-12-10T02:37:05.263 に答える
3
var array = [3 , 6, 2, 56, 32, 5, 89, 32];
var largest= array[0];

for (i=0; i<=largest;i++){
    if (array[i]>largest) {
        largest=array[i];
    }
}
于 2012-12-10T02:39:13.487 に答える
2

コードに 2 つの問題があります。まず、array>largestする必要がありますarray[i]>largestif次に、外側の変数と同じではない新しい最大変数を内側で宣言しています。var新しい最大値の割り当てから削除します。

于 2012-12-10T02:38:38.333 に答える