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

JavaScriptで配列の各要素に数値を掛けるカリー化関数の実装方法

課題

JavaScriptで、配列を引数に受け取り別の関数を返す関数を作成します。返された関数はさらに数値を引数として受け取り、最初の関数に渡された配列の各要素と、その数値との積からなる新しい配列を返す必要があります。

このように引数を段階的に受け取る設計はカリー化(currying)と呼ばれる手法です。アロー関数を連鎖させることで、非常に簡潔に実装できます。

コード例

以下がその実装例です。

const arr = [2, 5, 2, 7, 8, 4];
const num = 4;

const produceWith = (arr = []) => (num) => {
    const res = arr.map(el => {
        return el * num;
    });
    return res;
};

console.log(produceWith(arr)(num));

仕組みの解説

produceWith は配列を受け取ると、まず内部の関数を返します。この内側の関数が num を受け取り、map() を使って配列の各要素に num を掛けた新しい配列を生成して返します。

map() は元の配列を変更せずに新しい配列を返すため、副作用のない安全な処理となっています。呼び出し時は produceWith(arr)(num) のように、関数を続けて呼び出す形(二重括弧)で記述する点に注意してください。

出力結果

コンソールには以下のように出力されます。

[ 8, 20, 8, 28, 32, 16 ]

各要素が元の値の4倍(2→8、5→20、2→8、7→28、8→32、4→16)になっていることが確認できます。このパターンは、基準となるデータを先に固定しておき、後から係数だけを差し替えて再利用したい場合などに特に便利です。

  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()メソッドを使った具体的な実装例で