2016-09-02 13 views
0

非常に大きなJavaScript配列(例:25万の数字)から最小値と最大値を簡単に取得するにはどうすればよいですか? JavaScript:非常に大きな配列の最小値と最大値?

は、私は、このメソッドを使用しようとしましたが、それは動作しません: JavaScript: min & max Array values?

私は、ブラウザで私が「最大コールスタックは、サイズ超過」を取得しながら、私は、エラーを取得しないのVisualStudioでデバッグよ。

例コード:

var max = Math.max.apply(-Infinity, arr); 
var min = Math.min.apply(Infinity, arr); 

"ARRは、" 私の非常に大きな配列です。

+0

まず、適用の最初の引数は、コンテキストです。 'null'または' this'でなければなりません。次に、あなたはいつもカスタムforループに戻ることができます。それは最も安全なオプションです – Rajesh

+0

あなたのコードに何が問題なのですか?私のクロームで働いています。私のために – pietro909

+0

コードも動作し、どのブラウザを使用していますか? –

答えて

0

それはあなたが安全にMath.min()またはMath.max()を使用することはできません言及したサイズの大きなアレイの場合

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

null、this、またはMathを使ってみましたが、効果は常に同じです。あなたは私が記述したような大きな配列でそれを使用しようとしましたか?このコードは小さなテーブルで動作するため(65K要素で試しました) – PAPP

+0

大規模な配列では試していませんでした。@PAPPを一度チェックさせてください –

+0

150-300 Kの引数を渡す必要がある場合、ブラウザのセッションに応じてスタックオーバーフローを起こさないという保証はありません。大きな配列は 'Math.min()'や 'Math.max()'では行えません。 – Redu

0

私のために正常に動作しています。私はこれがどのように行われるべきであると信じています。

var arr = new Array(1000000).fill().map(_=> ~~(Math.random()*10000000)), 
 
findMax = a => a.reduce((res,cur) => res < cur ? cur : res ,-Infinity); 
 
console.log(findMax(arr));