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

JavaScriptで配列内の奇数だけを合計する方法

JavaScriptでは、配列に含まれる数値から奇数だけを取り出して合計することが簡単に行えます。ポイントとなるのはモジュロ演算子(%)です。この演算子は割り算の余りを求めるため、2で割った余りが1になる数値=奇数を判別できます。

サンプルコード

<html>
<body>
<script>
   var tot = 0;
   var a = [1,45,78,9,78,40,67,76];
   for(var i = 0; i<a.length;i++){
      if(a[i]%2 !== 0){
      tot += a[i]
      }
   }
document.write(tot);
</script>
</body>
</html>

実行結果

122

コードの解説

このプログラムでは、まず合計値を格納する変数 tot を0で初期化しています。次に for ループで配列 a の要素を先頭から順番に取り出し、各要素を2で割った余りをモジュロ演算子(%)で判定します。

余りが1であればその数値は奇数なので、条件式 a[i]%2 !== 0 が真となり、tot += a[i] によって合計に加算されます。偶数の場合は条件を満たさないためスキップされます。

上記の配列の場合、奇数は「1・45・9・67」の4つであり、これらを足した 1 + 45 + 9 + 67 = 122 が出力として表示されます。

別の書き方:filterとreduceを活用

よりモダンな書き方としては、filter() で奇数だけを抽出し、reduce() で合計を求める方法もあります。

var a = [1,45,78,9,78,40,67,76];
var tot = a.filter(function(n){ return n % 2 !== 0; })
           .reduce(function(sum, n){ return sum + n; }, 0);
console.log(tot); // 122

この方法ならループ処理が不要になり、意図が読み取りやすい簡潔なコードになります。状況に応じて使い分けるとよいでしょう。

  1. 配列で表現された数値に1を加算する方法(再帰的アプローチ)

    この記事では、興味深い問題を一つ取り上げます。それは「与えられた数値に1を加算する」というものです。これは非常に単純な作業ですが、ここでは数値を配列として扱う点がポイントになります。数値の各桁は、配列の各要素として格納されます。たとえば、数値が512であれば、{5, 1, 2} のように保存されます。さらに、この加算処理を再帰的アプローチで実装する必要があります。それでは、アルゴリズムを見ていきましょう。アルゴリズムincrement(arr, n, index)初期状態では、indexのデフォルト値は0です。begin if index < n, then if

  2. C++で配列内のK番目の奇数を見つける方法

    このチュートリアルでは、与えられた配列の中からK番目の奇数を見つけるプログラムをC++で作成します。配列の走査と条件分岐の基本的な考え方を学べる、初心者向けの良い例題です。問題を解く手順以下の手順に従って問題を解いていきましょう。配列と値kを初期化します。配列を先頭から順に走査します。現在の要素が奇数であれば、kの値を1減らします。kが0になった時点で、その要素を結果として返します。配列全体を走査してもK番目の奇数が見つからない場合は、-1を返します。サンプルコードそれでは、実際のコードを見てみましょう。#include <bits/stdc++.h> using namespac