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

【JavaScript】配列の偶数インデックスと奇数インデックスの要素合計の差を求める方法

今回は、数値の配列を受け取り、偶数番目のインデックスにある要素の合計と奇数番目のインデックスにある要素の合計との差を返すJavaScript関数を作成します。

問題の例

たとえば、次のような配列が与えられたとします。

const arr = [3, 6, 34, 12, 6, 8, 8, 5, 6, 8];

この場合、関数は以下のように計算した結果を返す必要があります。

  • 偶数インデックス(0, 2, 4, ...)の要素:3 + 34 + 6 + 8 + 6 = 57
  • 奇数インデックス(1, 3, 5, ...)の要素:6 + 12 + 8 + 5 + 8 = 39

その差は「57 − 39 = 18」となるため、関数は 18 を返します。

実装コード

以下が実際のコードです。ループ処理の中でインデックスを2で割った余りを判定し、偶数なら加算、奇数なら減算することで差を求めています。

const arr = [3, 6, 34, 12, 6, 8, 8, 5, 6, 8];
const oddEvenDiff = arr => {
    let diff = 0;
    for(let i = 0; i < arr.length; i++){
        if(i % 2 === 0){
            diff += arr[i];
        }else{
            diff -= arr[i];
        };
    };
    // 結果は絶対値として返す
    return Math.abs(diff);
};
console.log(oddEvenDiff(arr));

コードの解説

この関数の処理の流れは次のとおりです。

  1. 変数 diff を0で初期化し、差分を蓄積していきます。
  2. for ループで配列の各要素を順に走査します。
  3. インデックス i を2で割った余りが0(偶数インデックス)の場合は要素を加算し、それ以外(奇数インデックス)の場合は減算します。
  4. 最後に Math.abs() を使って絶対値にすることで、どちらの合計が大きい場合でも正の値として結果を返せます。

出力結果

コンソールには次の出力が表示されます。

18

このように、シンプルなループ処理と条件分岐を組み合わせるだけで、偶数・奇数インデックス間の要素合計の差を簡単に求めることができます。

  1. C++で偶数を偶数インデックスへ、奇数を奇数インデックスへ並べ替える方法

    この問題では、サイズnの配列arr[]が与えられます。配列は半分(n/2個)が偶数、残り半分(n/2個)が奇数で構成されており、偶数を偶数インデックス(0, 2, 4…)に、奇数を奇数インデックス(1, 3, 5…)に配置するプログラムを作成することが課題です。 問題を理解するための例 入力: arr[] = {5, 1, 6, 4, 3, 8} 出力: arr[] = {6, 1, 5, 4, 3, 8} 解決アプローチ まず思いつくのは、配列を走査しながら「偶数位置にない値」を見つけ、次の奇数位置の値と入れ替えていく方法です。これは有効な解法ですが、偶数用と奇数用の2つのインデックスを使う

  2. 奇数桁と偶数桁の合計の差が0かどうかを判定するJavaプログラム

    問題文与えられた長整数 n に対して、0番目から数えた奇数番目の桁の合計と、偶数番目の桁の合計との差が 0 になるかどうかを判定するプログラムを作成します。インデックスは 0 から始まるものとします。例n = 1212112 の場合 奇数番目の桁の合計 = 2 + 2 + 1 = 5 偶数番目の桁の合計 = 1 + 1 + 1 + 2 = 5 差 = 5 - 5 = 0 出力 = Yesこのように、両者の合計が一致していれば「Yes」、一致していなければ「No」が出力されます。解法のポイント:11の倍数判定法との関係この問題には、実はとても便利な数学的な性質があります。それは「11の倍