配列[1,8,5,4,3,9,2]が与えられた場合、配列の最大値9と最小値1を取得するアルゴリズムを記述してください。 1.プロトタイププロパティを通じてmin()とmax()関数を拡張するアルゴリズム 1 の考え方は、カスタム min() 関数と max() 関数のループで最初の値と後続の値を比較し、最大値と最小値を動的に更新して結果を見つけることです。 // 最小値 Array.prototype.min = function () { min = this[0]とします。 len = this.length;とします。 (i = 1; i < len; i++) の場合 { もし this[i] < min ならば min = this[i] } 戻り最小値 } // 最大値 Array.prototype.max = function () { max = this[0]とします。 len = this.length;とします。 (i = 1; i < len; i++) の場合 { もし(this[i] > max) max = this[i] } 最大リターン } // 結果 console.log(arr.min()); // 1 console.log(arr.max()); // 9 2. Mathオブジェクトのmin()関数とmax()関数を使用するアルゴリズム 2 の主なアイデアは、apply() 関数を通じて関数の実行本体を変更し、配列をパラメーターとして apply() 関数に渡すことです。この方法では、配列は Math オブジェクトの min() 関数と max() 関数を直接呼び出して、戻り値を取得できます。 Array.min = 関数(配列) { Math.min.apply(Math, 配列) を返す } // 最大値 Array.max = function (array) { Math.max.apply(Math, 配列) を返す } // 結果 console.log(Array.min(arr)); // 1 console.log(Array.max(arr)); // 9 3. アルゴリズム2の最適化アルゴリズム 2 では、 min() 関数と max() 関数が配列型の静的関数として使用されていますが、チェーン呼び出しはサポートされていません。オブジェクト リテラルを使用して簡略化できます。 // 最小値 Array.prototype.min = function() { Math.min.apply({}, this) を返す } // 最大値 Array.prototype.max = function () { Math.max.apply({}, this) を返す } // 結果 console.log(arr.min()); // 1 console.log(arr.max()); // 9 アルゴリズム 2 とは異なり、検証中、min() 関数と max() 関数はインスタンス メソッドであるため、配列を介して直接呼び出すことができます。 4. 配列型のreduce()関数を使用するアルゴリズム 4 の主なアイデアは、reduce() 関数が initialValue を設定せず、配列の最初の要素をコールバック関数の最初のパラメーターとして直接使用し、それを後続の値と順番に比較することです。最大値を見つける必要がある場合、アキュムレータは各ラウンドで大きい値を返します。最小値を見つける必要がある場合、アキュムレータは各ラウンドで小さい値を返します。 // 最小値 Array.prototype.min = function () { this.reduce((pre, cur) => { を返します。 pre < cur を返す? pre : cur }) } // 最大値 Array.prototype.max = function () { this.reduce((pre, cur) => { を返します。 pre > cur を返す? pre : cur }) } // 結果 console.log(arr.min()); // 1 console.log(arr.max()); // 9 5. 配列型のsort()関数を使用するアルゴリズム 5 の主なアイデアは、配列のネイティブ sort() 関数を使用して配列をソートすることです。ソートが完了すると、最初の要素と最後の要素が配列の最小要素と最大要素になります。 sortArr = arr.sort((a, b) => a - b) とします。 // 最小値 sortArr[0] // 最大値 sortArr[sortArr.length - 1] // 結果 console.log(sortArr[0]); // 1 console.log(sortArr[sortArr.length - 1]); // 9 6. ES6のスプレッド演算子を使用する// 最小値 Math.min(...arr) // 最大値 Math.max(...arr) // 結果 console.log(Math.min(...arr)); // 1 console.log(Math.max(...arr)); // 9 これで、JavaScript で配列の最大値と最小値を実装する 6 つの方法についての記事は終了です。JavaScript 配列の最大値と最小値に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL バージョン 5.7.24 のデータベース インストール プロセスの詳細なグラフィック説明
>>: CentOS6.8 中国語/英語環境切り替えチュートリアル図
ブログを書くのは初めてです。開発に携わって2年になります。仕事の後に何か有意義なことを見つけたいと思...
IE6 で CSS スタイルの div または li の背景のタイリングや境界の破壊を解決するには、...
nginx プロセス モデルでは、トラフィック統計、トラフィック制御、データ共有などのタスクを完了す...
最近、私はプロジェクトに取り組んでおり、背景を記述するために SQL ステートメントを使用する必要が...
InnoDB ストレージ エンジンの主な機能には、挿入バッファ、二重書き込み、適応ハッシュインデック...
目次setStateを使用する理由setStateの使用法非同期または同期更新要約するsetStat...
まず第一に、私はウェブデザイナーです。具体的には、私は XHTML フロントエンド デザイナーです。...
目次概要ジェネリック医薬品とはビルドシステムジェネリック医薬品の一般的な理解ジェネリッククラスジェネ...
序文馬を書いていたとき、水平方向と垂直方向の中央揃えの方法について、誰もあまり知らなかったと思います...
この記事では、WeChatアプレットのレコード機能を実装するための具体的なコードを参考までに紹介しま...
前回の記事では、nginx がリクエスト ラインのデータを読み取って、リクエスト ラインを解析する方...
この記事の例では、ドラッグアンドドロップを使用して構造ツリーを作成するVueの具体的なコードを共有し...
半透明の境界線結果: 実装コード: <div> 半透明の境界線が見えますか? </...
目次マハ1. MAHアーキテクチャの概要2. 適用可能なシナリオ3. MHAの動作原理4. MHAの...
目次前面に書かれたWC とは何でしょうか?現在の欠陥1. コンポーネント内部イベントのコールバック2...