3

ユーザーが入力した 10 個の数字のうち最大のものを表示する JavaScript プログラムを作成しようとしています。これは私がこれまで持っているものですが、機能していません。

<html>
    <head></head>
    <body>
    <script type="text/javascript">
         var counter=1;
         var number= new Array;
         number.length=9;
         var largest=0;

        while (counter <= 10)  {
            number=window.prompt("Enter Numbers 1-10 Number:"+counter+".");
                number[counter]= parseInt(number);
            counter++;
        }
        largest=Math.max.apply(Array);  
        document.writeln("<h1>Largest number is " +largest+ "</h1>");
</script>
</body>
</html>
4

5 に答える 5

2

thisArgに期待されるものが単に欠けていますFunction.prototype.apply

MDN で説明されているSyntax

fun.apply(thisArg[, argsArray])

この簡単な例に示すように

Math.max.apply (null,[5,4,3,7,9,]) //9
                ^^^^

null数学は特定のコンテキストを想定していないため、簡単にするために例でwhereが使用されています

あなたがやろうとしているのは、配列numberMath.max渡すことですthisArg .ArrayMath.max

0 個以上の引数を指定すると、各引数で ToNumber を呼び出し、結果の値の最大値を返します。

  • 引数が指定されていない場合、結果は −∞ になります。
于 2013-10-11T16:20:23.077 に答える
1

いくつかの問題、

  • 配列のインデックスは 0 です。カウンターを 0 から開始して 0 インデックスをスキップしました。これにより、配列の計算が台無しになります。(Math.max.apply(array, number) を使用すると、0 のインデックスなしで機能します)。
  • すべてのプロンプトで number 変数を上書きした場合は、window.prompt を使用して parseInt に入力するか、一時変数に入力します。
  • 適用変数の構文が正しくありませんでした。

これを試して:

var counter=0;
 var number= new Array;
 number.length=9;
var newnumber;
 var largest=0;




while (counter <= 10)
{

    newnumber=window.prompt("Enter Numbers 1-10 Number:"+counter+".");
    number[counter]= parseInt(newnumber);

    counter++;
}
largest=Math.max.apply(Math, number);  
document.writeln("<h1>Largest number is " +largest+ "</h1>");
于 2013-10-11T16:25:31.447 に答える
1
  1. 入力を保持するために、配列と一時変数を混同しています。
  2. applyコンテキスト (この場合は関係ありません) と引数配列の 2 つの引数を取ります。

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

var arr = [];
while (counter <= 10)
{

    number=window.prompt("Enter Numbers 1-10 Number:"+counter+".");
    arr[counter]= parseInt(number);

    counter++;
}

largest=Math.max.apply(Array, arr);  

(フィドル)

于 2013-10-11T16:20:36.337 に答える
0
<html>
<head>
</head>
<body>
<script type="text/javascript">
var counter=1;
var number= [];

var largest=0;

while (counter <= 10){

number.push(Number(window.prompt("Enter Numbers 1-10 Number:"+counter+"."),10));

counter++;
}

Array.prototype.max = function () {
    return Math.max.apply(Math, this);
};


largest = number.max();
document.writeln("<h1>Largest number is " +largest+ "</h1>");


</script>
</body>
</html>
于 2013-10-11T16:30:37.060 に答える