JavaScriptで配列の交互要素(1つおきの要素)の合計を求める方法
交互要素の合計とは
本記事では、数値の配列を唯一の引数として受け取り、配列内の交互の要素(インデックスが偶数の位置にある要素)の合計を計算して返すJavaScript関数の実装方法を解説します。
例えばー
入力配列が以下の場合を考えてみましょう。
const arr = [1, 2, 3, 4, 5, 6, 7];
この場合、出力は次のようになります。
1 + 3 + 5 + 7 = 16
サンプルコード
以下が実際の実装コードです。
const arr = [1, 2, 3, 4, 5, 6, 7];
const alternativeSum = (arr = []) => {
let sum = 0;
for(let i = 0; i < arr.length; i++){
const el = arr[i];
if(i % 2 !== 0){
continue;
};
sum += el;
};
return sum;
};
console.log(alternativeSum(arr));出力結果
コンソールには以下の出力が表示されます。
16
コードの解説
このコードの仕組みを簡単に説明します。まず、変数 sum を0で初期化します。続いてforループを使い、配列の各要素を先頭から順に走査していきます。ループ内では、現在のインデックス i を2で割った余りをチェックし、余りが0以外(つまりインデックスが奇数)の場合は continue 文によって処理をスキップします。一方、インデックスが偶数の要素のみが変数 el として取得され、sum に加算されます。
すべての要素の処理が完了した後、sum の値を返すことで、配列の交互要素の合計が求められます。なお、引数にデフォルト値として空の配列を設定しているため、引数なしで呼び出された場合でもエラーにならず0を返す安全な設計になっています。
-
JavaScriptのreduce()メソッドで配列要素の積を求める方法
問題JavaScriptで、配列 arr を引数として受け取る関数を作成します。この関数は、配列内のすべての要素を掛け合わせた積を計算し、その結果を返す必要があります。解決策:reduce()メソッドを使う配列の全要素を集約して単一の値を得たい場合、Array.prototype.reduce() メソッドが最適です。reduce() は配列の各要素に対してコールバック関数を順に実行し、結果をアキュムレータ(累積値)に蓄えていきます。積を求める場合は、初期値として「1」を指定するのがポイントです。1は乗法における単位元のため、計算結果に影響を与えず、さらに空の配列が渡された場合でも正しく 1
-
JavaScriptでエレベータが移動した階数の合計を求める方法
問題 ある時間帯において、建物のエレベータが停止した階数を要素として持つ配列を受け取り、その間にエレベータが移動した階数の合計を返すJavaScript関数を作成する必要があります。 解決のアプローチ この問題は、配列内の隣り合う2つの階数の差の絶対値を順番に足し合わせることで解決できます。例えば、7階から1階へ移動すれば6階分、1階から7階へ戻ればさらに6階分とカウントしていきます。最終的に、これらの差をすべて合計した値が、エレベータがカバーした総階数となります。 コード例 以下がその実装コードです。 const arr = [7, 1, 7, 1]; const floorsCovere