JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【JavaScript】配列内の要素が基準値より大きい・小さいかを一括でカウントする方法

JavaScriptでプログラミングをしていると、配列の中から特定の基準値よりも大きい要素と小さい要素の個数を、一度に集計したい場面があります。

例えば、次のような数値の配列があるとしましょう。

const arr = [3, 5, 5, 2, 23, 4, 7, 8, 8, 9];

ここで求めたいのは、この配列と任意の数値 n を引数として受け取り、「n より大きい要素の個数(greater)」と「n より小さい要素の個数(smaller)」をプロパティとして持つオブジェクトを返す関数です。

サンプルコード

以下は、配列の reduce() メソッドを活用した実装例です。ループ処理を明示的に書くことなく、簡潔にカウントできます。

const arr = [3, 5, 5, 2, 23, 4, 7, 8, 8, 9];

const smallerLargerNumbers = (arr, num) => {
  return arr.reduce((acc, val) => {
    let { greater, smaller } = acc;
    if(val > num){
      greater++;
    };
    if(val < num){
      smaller++;
    };
    return { greater, smaller };
  }, {
    greater: 0,
    smaller: 0
  });
};

console.log(smallerLargerNumbers(arr, 3));

コードのポイント

  • 初期値の設定:reduce() の第2引数で { greater: 0, smaller: 0 } という初期オブジェクトを渡しています。
  • 条件分岐による分類:各要素 val を基準値 num と比較し、大きければ greater を、小さければ smaller をインクリメントします。
  • 等しい要素の扱い:基準値と完全に一致する要素は、どちらのカウントにも含まれない点に注意してください。

実行結果

上記のコードを実行すると、コンソールには次のような出力が表示されます。

{ greater: 8, smaller: 1 }

この例では基準値として 3 を指定しているため、「3 より大きい要素」は 5, 5, 23, 4, 7, 8, 8, 9 の 8 個、「3 より小さい要素」は 2 のみで 1 個となっています。このように、1 回の走査で両方の集計を同時に行えるのが reduce() を使うメリットです。

  1. JavaScriptでスタックに要素をプッシュ(Push)する方法

    ここでは、いくつかの小さなヘルパー関数を備えた、次のようなJavaScriptのスタッククラスを考えてみましょう。例class Stack {    constructor(maxSize) {       // 最大サイズが指定されない場合はデフォルト値を設定       if (isNaN(maxSize)) {          maxSize = 1

  2. 【初心者向け】JavaScriptのFileとFileReaderを使ってファイルを読み込む方法

    JavaScriptにおけるFileとFileReaderとは? JavaScriptでは、<input type=file>要素を使うことで、ユーザーにローカルファイルを選択させることができます。選択されたファイルはFileオブジェクトとして取得でき、ファイル名・サイズ・MIMEタイプなどの基本情報へアクセス可能です。 さらに、FileReaderオブジェクトを利用すれば、選択されたファイルの中身を非同期で読み込み、テキストやデータURLとして扱うことができます。 サンプルコード 以下は、JavaScriptでFileとFileReaderを使用して、ファイルの詳細情報を表示し