1

私はこのJavaScriptコードを持っています: http://jsfiddle.net/MvWV7/5/

私が達成しようとしているのは、ユーザーが 1 から始まる入力を入力する必要があるということです。ユーザーが 1 を入力した後、次の値は 2 (nother 番号ではない) である必要があります。

これを行うことで、入力値を配列に入力しようとしています(フィドルに示されているように):

var ary = [];   
$(".activity_order").not(self).each(function(t) {ary.push(this.value);})

しかし、私がするとき

ary.max()

私は得る

Uncaught TypeError: Object ,,,,,,,, has no method 'max' 

コンソールary.max()で数字がない場合は0になります

アップデート

私のせいで、私は jsfiddle で Google コンソールを使用していましたが、内部で配列メソッドを探し始めました。ary.max() を実行すると 0 が返されます

4

5 に答える 5

3

おそらく[].maxjsfiddleドメインのコンソールに入力しています。出力に注意してください。

function () {
    return Math.max.apply(null, this); // 'this' is your array
}

ここでの理由は、jsfiddle ドメインのコードがメソッドArrayを含めるように のプロトタイプを変更したためmaxです。メソッドにマップされ、オブジェクト自体またはそのプロトタイプMath.maxにネイティブに存在しません。Array

于 2013-03-27T18:48:59.007 に答える
0

配列にはメソッドがありません.max()。作成したい場合は、配列を反復処理して配列内の最大値を見つける関数を作成または調達する必要があります。

結局のところ、関数を使用してMath.max()この問題を次のように解決できます。

var m = Math.max.apply(null, ary);
于 2013-03-27T18:47:45.440 に答える
0

配列にはメソッドがありませんmax。しかしMath.max、これに使用できるものがあります。

var m = Math.max.apply(0, ary);

のように呼び出すことができない理由は、配列の代わりに一連の値Math.max(ary)を受け入れるためです。Math.maxを使用して呼び出すapplyと、2 番目の配列引数が一連の引数に変換されます。

于 2013-03-27T18:48:01.320 に答える
0

問題はそれ.maxであり.min、存在しません。スローされたエラーが示すように、それらはメソッドではありません。

指定した構文で何かを行うには、配列プロトタイプを変更する必要があります。

これはすでにここで説明されています: JavaScript: min & max Array values?

于 2013-03-27T18:48:27.680 に答える
0

ネイティブに配列オブジェクトにmax()andメソッドはありません。min()使用する前に追加する必要があります。

Array.prototype.min = function () {
  return this.reduce(function (p, v) {
    return ( p < v ? p : v );
  });
}

Array.prototype.max = function () {
  return this.reduce(function (p, v) {
    return ( p > v ? p : v );
  });
}

これは、このメソッドが追加されたコードの作業フォークです。

于 2013-03-27T18:49:08.840 に答える