JavaScriptのreduce()メソッドで配列要素の積を求める方法
問題
JavaScriptで、配列 arr を引数として受け取る関数を作成します。この関数は、配列内のすべての要素を掛け合わせた積を計算し、その結果を返す必要があります。
解決策:reduce()メソッドを使う
配列の全要素を集約して単一の値を得たい場合、Array.prototype.reduce() メソッドが最適です。reduce() は配列の各要素に対してコールバック関数を順に実行し、結果をアキュムレータ(累積値)に蓄えていきます。
積を求める場合は、初期値として「1」を指定するのがポイントです。1は乗法における単位元のため、計算結果に影響を与えず、さらに空の配列が渡された場合でも正しく 1 が返されるという利点があります。
コード例
以下がその実装例です。
const arr = [3, 1, 4, 1, 2, -2, -1];
const produceElements = (arr = []) => {
const res = arr.reduce((acc, val) => {
acc = acc * val;
return acc;
}, 1);
return res;
};
console.log(produceElements(arr));処理の流れ
このコードでは、アキュムレータ(acc)の初期値を 1 とし、配列の各要素(val)を順番に掛けていきます。具体的な計算過程は次の通りです。
1 × 3 = 3 → 3 × 1 = 3 → 3 × 4 = 12 → 12 × 1 = 12 → 12 × 2 = 24 → 24 × (-2) = -48 → -48 × (-1) = 48
出力結果
コンソールには以下のように表示されます。
48
-
JavaScriptで配列の要素を同じ配列内に複製する方法
JavaScriptでは、concat()メソッドとsort()メソッドを組み合わせることで、既存の配列の要素を同じ配列内に複製することができます。ここでは、実際に動作するサンプルコードを使って、その手順をわかりやすく解説します。 コード例 以下は、配列の要素を同じ配列内に複製するためのコード例です。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" cont
-
JavaScriptで配列内の3番目に大きい数値を取得する方法
JavaScriptでは、数値の配列を第1引数(唯一の引数)として受け取る関数を作成することが求められます。この関数の役割は、配列の中から3番目に大きい数値を選び出して返すことです。もし配列内に3番目に大きい数値が存在しない場合(ユニークな数値が3つ未満の場合)は、代わりに配列の最大値を返します。具体例たとえば、入力配列が以下のようになっているとします。const arr = [34, 67, 31, 87, 12, 30, 22];この場合、数値を降順に並べると「87 → 67 → 34」となるため、期待される出力は次のとおりです。const output = 34;実装コードこの処理を実現