JavaScriptで配列内の「nより大きい・小さい」要素数をカウントする方法
はじめに
JavaScriptで配列を扱う際、「指定した数値よりも大きい要素」と「小さい要素」がそれぞれいくつあるのかを一度に把握したい場面があります。本記事では、reduce()メソッドを活用して、この処理を簡潔に実現する方法をご紹介します。
問題の概要
まず、次のような数値リテラルの配列があるとします。
const arr = [3, 5, 5, 2, 23, 4, 7, 8, 8, 9];
ここで求められるのは、この配列と任意の数値 n を引数として受け取り、n より大きい要素の個数とn より小さい要素の個数をオブジェクトとして返すJavaScript関数を作成することです。
それでは、実際のコードを見ていきましょう。
実装例
以下がそのコードです。
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));コードの解説
この関数では、初期値として greater: 0(大きい要素のカウント)と smaller: 0(小さい要素のカウント)を持つオブジェクトを用意し、reduce()を使って配列の各要素を順番に判定しています。
- 現在の値 val が num より大きければ、greater をインクリメント
- val が num より小さければ、smaller をインクリメント
なお、num と等しい要素はどちらのカウントにも含まれない点に注意してください。
出力結果
コンソールには次のように表示されます。
{ greater: 8, smaller: 1 }この例では num として 3 を渡しているため、3より大きい要素は8個(5, 5, 23, 4, 7, 8, 8, 9)、3より小さい要素は1個(2)という結果になります。
-
JavaScriptの分割代入を使った関数パラメータの受け渡し方法
JavaScriptでは、関数にオブジェクトを引数として渡す際、「分割代入(デストラクチャリング)」と呼ばれる構文を利用することで、オブジェクトの各プロパティを個別の変数として受け取ることができます。 さらに、各プロパティにデフォルト値を指定しておけば、対応するプロパティが存在しない場合でもエラーにならず、あらかじめ設定した値が使用されます。これにより、安全で柔軟な関数設計が可能になります。 サンプルコード 以下は、分割代入を使って関数のパラメータを受け取るJavaScriptのコード例です。 <!DOCTYPE html> <html lang="en&quo
-
【初心者向け】JavaScriptでインポートとエクスポートの名前を変更する方法
JavaScriptにおけるインポートとエクスポートの名前変更とはJavaScriptのESモジュールでは、asキーワードを使うことで、エクスポートやインポートの際に関数や変数に別名を付けることができます。モジュール側の元の名前はそのまま維持しながら、利用する側では分かりやすい名前で扱えるため、コードの可読性と保守性が向上します。注意:このサンプルを実行するには、ローカルホストサーバー環境が必要です。HTMLファイルを直接ブラウザで開くと、CORSポリシーの制限によりモジュールの読み込みが失敗する場合があるためご注意ください。コード例index.html<!DOCTYPE html>