2017-06-14 5 views
-1

私が行うとき、私はそれがNANを返し、その後、なぜMath.max(array int [])はすべてが整数であってもtypescriptでNANを返しますか?

this.quantity = Math.max(this.values); 

を、次のコードをintの配列を生成

this.values = new Array(3).fill(0).map((v, i) => i + 1); 

としています。どうした? console.log(this.values)を置くと、値として[1,2,3]を持つ整数配列を見ることができます。

+1

を試し、配列を取ることはありません、 'Math.max'はA取り引数ではなく、配列ではありません。数値ではなく配列を渡すので、関数はすべての引数に 'ToNumber'を適用し、NaNは数値に強制的に配列された結果であるため、結果はNaNです。 'Math.max(... this.values)'。 – Li357

答えて

3

Math.max

Math.max(3, 1, 2); // returns 3は、配列を取ることはありません、それは複数の引数を取ります。 (あなたの配列は数値にキャストされ、"1,2,3"は数字ではないため、NaNになります)。

あなたは、コールのためspread syntaxを使用することができます。

this.quantity = Math.max(...this.values); 
0

機能Math.max()はそのようには機能しません。それは2つ(またはそれ以上)の整数をとり、より大きい整数を返します。たとえば:

+0

それは様々な議論を要する。 'Math.max(3、4、2、44、3)'を試してください。 – Li357

+0

Math.max()関数は、0以上の数値の中で最大**を返します。** – Derek

+0

更新されました。指摘のおかげで – Aenadon

0

Math.maxあなたが値を広めるために必要があり、この

Math.max.apply(Math, this.values); 
関連する問題