JavaScriptで配列内の正の数だけを合計する方法
問題
正と負の数値が混在した配列を受け取り、その中に含まれる正の数すべての合計を計算して返すJavaScript関数を作成する必要があります。
たとえば、[5, -5, -3, -5, -7, -8, 1, 9] という配列が与えられた場合、正の数は 5、1、9 の3つなので、期待される出力は 15 となります。
解決コード
以下がその実装例です。
const arr = [5, -5, -3, -5, -7, -8, 1, 9];
const sumPositives = (arr = []) => {
const isPositive = num => typeof num === 'number' && num > 0;
const res = arr.reduce((acc, val) => {
if(isPositive(val)){
acc += val;
};
return acc;
}, 0);
return res;
};
console.log(sumPositives(arr));コードの解説
このコードのポイントは以下の2点です。
- isPositive関数: 引数が数値型であり、かつ0より大きい場合にのみ
trueを返します。これにより、負の数だけでなく、文字列などの不正な値も除外できます。 - reduce()メソッド: 初期値
0から開始し、配列の各要素を順番に走査しながら、正の数であれば累積値(acc)に加算していきます。最終的な累積値がそのまま合計となります。
出力結果
コンソールには以下のように表示されます。
15
-
JavaScriptで配列内のすべてのゼロを末尾に移動する方法
問題概要 JavaScriptで、数値などのリテラルを含む配列を受け取る関数を作成することを考えます。この配列には、いくつかの0(ゼロ)が含まれている可能性があります。求められているのは、すべてのゼロを配列の末尾へ移動させると同時に、ゼロ以外の要素の相対的な順序は元のまま維持するという処理です。 解決策のコード例 以下がその実装コードです。 { const res = []; let currIndex = 0; for(let i = 0; i < arr.length; i++){ const el = arr[i]; if(el === 0){
-
JavaScriptで配列の要素をすべて奇数に変換する方法
問題 配列を受け取り、その各要素を次のルールに従って変換するJavaScript関数を作成することを考えます。 数値が奇数の場合 → そのままの値を保持する 数値が偶数の場合 → 1を引いて奇数に変換する そして最後に、変換後の新しい配列を返します。 コード例 以下が実際のコードです。 const arr = [5, 23, 6, 3, 66, 12, 8]; const reduceToOdd = (arr = []) => { const res = []; for(let i =