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

【JavaScript】配列から特定の数値で割り切れる要素だけを抽出するdivisibleBy()関数の作り方

今回は、数値の配列と1つの数値を引数として受け取り、その数値で割り切れる要素だけを含む新しい配列を返すJavaScript関数「divisibleBy()」の実装方法を解説します。

問題の概要

次のような要件を持つ関数を作成します。

  • 第1引数:数値が格納された配列
  • 第2引数:判定に使う1つの数値
  • 戻り値:第2引数の数値で割り切れる要素のみを含む、フィルタリング済みの配列

実装のポイント

配列の要素を絞り込むには、Array.prototype.filter()メソッドが便利です。また、ある数が別の数で割り切れるかどうかは、剰余演算子(%を使って「余りが0かどうか」を判定することで確認できます。

サンプルコード

const arr = [56, 33, 2, 4, 9, 78, 12, 18];
const num = 3;
const divisibleBy = (arr = [], num = 1) => {
    const canDivide = (a, b) => a % b === 0;
    const res = arr.filter(el => {
        return canDivide(el, num);
    });
    return res;
};
console.log(divisibleBy(arr, num));

出力結果

[ 33, 9, 78, 12, 18 ]

コードの解説

このコードでは、内部ヘルパー関数canDivide(a, b)を定義し、「a を b で割った余りが0であるか」をブール値で返しています。その後、filter()のコールバック内で各要素に対してこの判定を行い、条件を満たす要素(33、9、78、12、18)だけが新しい配列に残ります。

元の配列arrには56や2、4のように3で割り切れない数値も含まれていますが、これらは正しく除外されていることが出力結果からわかります。

まとめ

filter()と剰余演算子を組み合わせることで、割り切れる要素の抽出はわずか数行のコードで実現できます。条件判定部分を独立した関数に分けておくと、処理の意図が明確になり、再利用性も高まるのでおすすめです。

  1. JavaScriptの配列findIndex()関数の使い方をわかりやすく解説

    JavaScriptのfindIndex()関数は、配列の中から指定した条件を満たす最初の要素を見つけ、そのインデックス番号を返すメソッドです。条件に合う要素が見つかった場合、その要素のインデックスが返されます。もし条件を満たす要素がひとつも存在しない場合は、-1が返されるという特徴があります。findIndex()の基本的な使い方以下は、findIndex()関数を使ったサンプルコードです。ボタンをクリックすると、配列内の「lion」という要素のインデックスを取得して表示します。サンプルコード<!DOCTYPE html> <html lang="ja"

  2. JavaScriptの配列some()メソッドの使い方をわかりやすく解説

    JavaScriptのArray.some()メソッドは、配列の要素の中に、指定されたテスト(条件)を満たすものが「1つでも存在するかどうか」を判定するためのメソッドです。ここでいうテストとは、配列の各要素に対して順番に実行されるコールバック関数のことを指します。コールバック関数が1つでもtrueを返した時点でsome()はtrueを返し、すべての要素が条件を満たさなかった場合はfalseを返します。なお、空の配列に対して呼び出した場合は常にfalseを返すという仕様になっている点にも注意しましょう。some()メソッドのサンプルコード以下は、配列のsome()メソッドを使った具体的な実装例で