JavaScriptで奇数インデックスの配列要素をインデックス値で乗算する方法
概要
本記事では、数値の配列を引数として受け取る関数を作成します。この関数は、偶数インデックス(0, 2, 4...)に位置する要素はそのまま返し、奇数インデックス(1, 3, 5...)に位置する要素は対応するインデックス値を掛けた結果を返すものです。
処理内容の確認
まず、具体的な入力と期待される出力を見てみましょう。
入力:
[5, 10, 15, 20, 25, 30, 50, 100]
期待される出力:
[5, 10, 15, 60, 25, 150, 50, 700]
この結果から以下のことが分かります。
- インデックス0の「5」→ 偶数インデックスなのでそのまま 5
- インデックス1の「10」→ 1 × 10 = 10
- インデックス3の「20」→ 3 × 20 = 60
- インデックス5の「30」→ 5 × 30 = 150
- インデックス7の「100」→ 7 × 100 = 700
reduce()メソッドを使った実装
この処理を実現するには、Array.prototype.reduce() メソッドを使用するのが効果的です。reduce() を使えば、配列を走査しながら結果となる新しい配列を構築できます。
コード例
const arr = [5, 10, 15, 20, 25, 30, 50, 100];
const multiplyOdd = (arr) => {
return arr.reduce((acc, val, ind) => {
if (ind % 2 === 1) {
val *= ind;
}
return acc.concat(val);
}, []);
};
console.log(multiplyOdd(arr));
実行結果
コンソールには以下のように出力されます。
[
5, 10, 15, 60,
25, 150, 50, 700
]
コードの解説
この関数の動作を順番に見ていきましょう。
- 初期値の設定: reduce() の第2引数に空の配列
[]を渡すことで、アキュムレータ(acc)が空配列からスタートします。 - 奇数インデックスの判定:
ind % 2 === 1により、現在のインデックスが奇数かどうかを判定します。剰余演算子(%)を使うことでシンプルに判別できます。 - 乗算処理: 奇数インデックスの場合のみ
val *= indで値をインデックス倍します。 - 結果配列への追加:
acc.concat(val)で処理済みの値を順次結果配列へ追加していきます。
map()メソッドを使った別の実装
より簡潔に記述したい場合は、map() メソッドを利用することも可能です。元の配列と同じ長さの配列を返したいケースでは、map() の方が直感的です。
const arr = [5, 10, 15, 20, 25, 30, 50, 100];
const multiplyOdd = (arr) =>
arr.map((val, ind) => (ind % 2 === 1 ? val * ind : val));
console.log(multiplyOdd(arr));
どちらの方法でも同じ結果が得られます。用途や可読性の観点から、チームのコーディング規約に合わせて選択するとよいでしょう。
-
JavaScriptで2つの配列を乗算する方法|forループとmap()の実装例
JavaScriptで2つの配列の各要素同士を乗算し、その結果を新しい配列として取得する方法を解説します。基本的にはforループでインデックスを順番に処理しながら、対応する位置にある要素同士を掛け合わせていくシンプルなアプローチです。 2つの配列を乗算するサンプルコード 以下の例では、「CLICK HERE」ボタンをクリックすると、配列 arr と arr1 の対応する要素が乗算され、結果が新しい配列 multArray に格納された上で画面に表示されます。 <!DOCTYPE html> <html lang=en> <head> <meta ch
-
JavaScriptでテーブルにNULL値が挿入されるのを防ぐ方法
テーブルにNULL値が挿入されるのを防ぐには、値を入力する際に条件チェックを行う必要があります。NULLをチェックする条件は以下のように記述します。while( !( yourVariableName1==null || yourVariableName2==null || yourVariableName3==null……N){ // yourStatement1 . . N }このロジックを使用することで、NULL値が挿入されることを確実に防ぐことができます。次に、forループを使ってNULL値なしでテーブルに値を挿入します。以下がそのコードです。サンプルコ