【JavaScript】配列内の基準値より大きい・小さい要素の数を数える方法
問題の概要
まず、次のようなリテラルの配列があると仮定しましょう。
const arr = [3, 5, 5, 2, 23, 4, 7, 8, 8, 9];
この配列と任意の数値 n を引数として受け取り、「n より大きい要素」および「n より小さい要素」それぞれの出現回数をオブジェクトとして返すJavaScript関数を作成する必要があります。
解決方法:reduce() メソッドを使った実装
配列の reduce() メソッドを利用すれば、ループ処理を行いながらカウントを累積的に集計できます。初期値として { greater: 0, smaller: 0 } というオブジェクトを用意し、各要素が基準値より大きいか小さいかを判定して、対応するプロパティをインクリメントしていくのがポイントです。
以下が実際のコード例です。
const arr = [3, 5, 5, 2, 23, 4, 7, 8, 8, 9];
const greaterSmallerNumbers = (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(greaterSmallerNumbers(arr, 3));
実行結果
コンソールには次のように出力されます。
{ greater: 8, smaller: 1 }
この結果から、配列 arr の中で 3 より大きい要素は 5, 5, 23, 4, 7, 8, 8, 9 の8個、3 より小さい要素は 2 の1個であることが確認できます。
なお、基準値と等しい要素(この例では 3 自身)は greater にも smaller にも含まれない点に注意してください。もし「等しい要素」も数えたい場合は、equal プロパティを追加して val === num の条件分岐を実装すると同様の要領で拡張できます。
-
JavaScriptの範囲オーバーフロー・範囲アンダーフロー(rangeOverflow/rangeUnderflow)プロパティの使い方
rangeOverflow・rangeUnderflowプロパティとはJavaScriptでは、フォーム要素の validity プロパティ(ValidityStateオブジェクト)を利用することで、ユーザーが入力した値が条件を満たしているかどうかを簡単に検証できます。この中には、数値の入力範囲をチェックするための「rangeOverflow」と「rangeUnderflow」という2つのプロパティが用意されています。Range Underflow(範囲アンダーフロー)入力要素の値が、min属性で指定された最小値よりも小さい場合、validity.rangeUnderflow は true を
-
JavaScriptで数字パターンを表示する方法【初心者向けサンプルコード】
本記事では、テキスト入力欄とボタンを備えたJavaScript・HTMLプログラムの作成方法を解説します。ユーザーが入力欄に任意の数値(例:5)を入力してボタンをクリックすると、画面に以下のような数字パターンが表示される仕組みです。(n = 5 の場合の出力例)01 01 02 01 02 03 01 02 03 04 01 02 03 04 05仕組みのポイントこのパターンは二重ループ(ネストしたforループ)を使うことで実現できます。外側のループが「行」を制御し、内側のループがその行に表示する「数字の個数」を制御します。i 行目には 1 から i までの数字が順番に出力されるため、行が進む