JavaScript で配列の最大値と最小値を実装する 6 つの方法

JavaScript で配列の最大値と最小値を実装する 6 つの方法

配列[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() 関数はインスタンス メソッドであるため、配列を介して直接呼び出すことができます。
上記のアルゴリズム コードでは、apply() 関数に渡される最初の値は {} であり、これは実際には現在の実行環境のグローバル オブジェクトを表します。 2 番目のパラメーターは、処理する必要がある配列を指します。
apply 関数の特殊性により、最初のパラメータが null または undefined として指定されると、グローバル オブジェクトへのポインタに自動的に置き換えられ、元の値はラップされます。したがって、最初のパラメータを null (未定義) に設定することもできます。

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() 関数を使用して配列をソートすることです。ソートが完了すると、最初の要素と最後の要素が配列の最小要素と最大要素になります。
デフォルトの sort() 関数はアルファベット順にソートし、数字は文字列として扱われます。たとえば、数字 18 は「18」として扱われ、数字 6 は「6」として扱われます。ソートする場合、比較は文字列の各ビットに基づいて行われます。「1」は「6」より小さいため、ソートすると「11」は「6」より小さくなります。数値型の配列の場合、これは明らかに不合理です。したがって、カスタムソートを行う必要があります。

        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 を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JavaScript で配列を走査して最大値と最小値を見つける方法の例
  • 配列内の最大値または最小値を取得する JS 実装例
  • js配列の最大値と最小値を見つける4つの方法
  • 配列内の最大値と最小値、およびそれらの出力をJavaScriptで次の表に表示するソリューション
  • JavaScript学習ノート:配列内の最大値と最小値を取得する
  • 配列内の最大値と最小値を取得するJavascriptメソッドの概要
  • JS で配列の最大値、最小値、長さを取得する方法
  • JavaScriptで配列の最大値と最小値を取得する方法
  • JavaScriptで配列の最小値と最大値を取得する方法

<<:  MySQL バージョン 5.7.24 のデータベース インストール プロセスの詳細なグラフィック説明

>>:  CentOS6.8 中国語/英語環境切り替えチュートリアル図

推薦する

mysql bin-log ログファイルを sql ファイルに変換する方法

mysqlbinlogのバージョンを表示mysqlbinlog -V [--version] bin...

Vueは小さなカウントダウン機能を実装します

多くのプロジェクトでは、検証コードの送信など、カウントダウン機能を実装する必要があります。ここで、簡...

初心者のためのWebページ作成: HTMLのハイパーリンクAタグの使い方を学ぶ

ハイパーリンク a タグはリンク ポイントを表し、英語の単語「anchor」の略語です。その機能は、...

Nginx のパフォーマンスを向上させるための提案

Web アプリケーションが 1 台のマシンでのみ実行される場合、パフォーマンスを向上させるのは非常に...

非常に優れた CSS スキル 10 選のコレクションと共有

ここでは、CSS テクニックを巧みに使用することで、HTML を変更せずにブログやテンプレートの外観...

ウェブページの読みやすさを向上させるいくつかの方法

1. 対照的な色を使用します。ここでのコントラストとは、テキストの色と背景色のコントラストを指します...

Vueの自己ネストツリーコンポーネントの使い方の詳細な説明

この記事では、Vueの自己ネストツリーコンポーネントの使い方を参考までに紹介します。具体的な内容は次...

Vue を通じて QR コードスキャン機能を実装する

ヒントこのプラグインは https プロトコルでのみアクセスできます。http プロトコルはうまく機...

js のプロトタイプ、プロトタイプ オブジェクト、プロトタイプ チェーンの包括的な分析

目次プロトタイプを理解するプロトタイプオブジェクトを理解するインスタンスプロパティとプロトタイププロ...

Vue router-viewとrouter-linkの実装原理

使用 <div id="アプリ"> <router-link ...

MySQLに挿入する前にデータが存在するかどうかを確認する方法

ビジネスシナリオ: 訪問者の訪問状況を記録する必要があるが、繰り返し記録することはできない挿入する前...

MySQLはSQL文を使用してテーブル名を変更します

MySQL では、SQL ステートメント rename table を使用してテーブル名を変更できま...

CSS の 4 つのインポート方法と優先順位の簡単な分析

第一に: CSSを導入する4つの方法CSS を導入する方法には、インライン スタイル、埋め込みスタイ...

Expressはログイン認証を実装

この記事では、ログイン認証を実装するためのExpressの具体的なコードを例として紹介します。具体的...