JavaScriptで配列内の奇数または偶数のみを合計する方法
数値の配列と、「odd(奇数)」または「even(偶数)」のいずれかの値を取る文字列を受け取り、条件に一致する数値だけを合計して返す関数を作成する必要があります。条件に一致する値がひとつも存在しない場合は、0を返すようにします。
たとえば、次のような動作を想定します。
console.log(conditionalSum([1, 2, 3, 4, 5], "even")); => 6 console.log(conditionalSum([1, 2, 3, 4, 5], "odd")); => 9 console.log(conditionalSum([13, 88, 12, 44, 99], "even")); => 144 console.log(conditionalSum([], "odd")); => 0
この関数は、Array.prototype.reduce()メソッドを使うとシンプルに実装できます。reduce()は配列の各要素に対してコールバック関数を実行し、単一の累積値を返すため、条件付きの合計処理に最適です。
コード例
const conditionalSum = (arr, condition) => {
const add = (num1, num2) => {
if(condition === 'even' && num2 % 2 === 0){
return num1 + num2;
}
if(condition === 'odd' && num2 % 2 === 1){
return num1 + num2;
};
return num1;
}
return arr.reduce((acc, val) => add(acc, val), 0);
}
console.log(conditionalSum([1, 2, 3, 4, 5], "even"));
console.log(conditionalSum([1, 2, 3, 4, 5], "odd"));
console.log(conditionalSum([13, 88, 12, 44, 99], "even"));
console.log(conditionalSum([], "odd"));
コードの解説
このコードでは、まず条件判定を行うadd関数を定義しています。conditionが「even」の場合は偶数(num2 % 2 === 0)を、「odd」の場合は奇数(num2 % 2 === 1)を判定し、条件に一致すれば現在の累積値に加算します。一致しない場合は、累積値をそのまま返します。
最後に、arr.reduce()の初期値として0を渡している点がポイントです。これにより、配列が空の場合や、条件に一致する要素がひとつもない場合でも、正しく0が返される仕組みになっています。
実行結果
コンソールには次のように出力されます。
6 9 144 0
-
JavaScriptで配列の合計値が偶数か奇数かを判定する方法
本記事では、配列内の全要素の合計を求め、その結果が偶数か奇数かに応じて文字列を返すJavaScript関数の実装方法を解説します。 問題 整数の配列 arr を引数として受け取るJavaScript関数を作成する必要があります。この関数は、配列内のすべての要素の合計が奇数であれば文字列「odd」を、偶数であれば文字列「even」を返すようにします。 解決のアプローチ まず、配列メソッドの reduce() を使って配列全体の合計値を算出します。次に、合計値を 2 で割った余り(剰余演算子 % の結果)が 0 かどうかをチェックすることで、偶数・奇数の判定を行います。 コード例 以下が実際のコ
-
【JavaScript】スペース区切りの数字文字列から仲間はずれの偶数・奇数を見つける方法
問題 スペースで区切られた数字を含む文字列を引数として受け取り、その中から「仲間はずれ」の数字を返すJavaScript関数を作成します。 入力される文字列には、すべて奇数の中に偶数が1つだけ含まれているか、あるいはすべて偶数の中に奇数が1つだけ含まれているという特徴があります。関数の目的は、その唯一の異なる数字を見つけ出して返すことです。 サンプルコード 以下が実装例です。 { if(num % 2 === 0){ evens.push(num); }else{ odds.push(num);