JavaScriptで偶数インデックスの要素の合計に最後の要素を掛けて求める方法
問題
整数の配列を受け取り、偶数番目のインデックスにある要素の合計に、最後のインデックスの要素を掛けた値を返すJavaScript関数を作成します。
例として、次の配列を考えてみましょう。
const arr = [4, 1, 6, 8, 3, 9];
この場合、期待される出力は次の通りです。
const output = 117;
計算の流れ
- 偶数インデックス(0, 2, 4)にある要素は「4, 6, 3」
- それらの合計は「4 + 6 + 3 = 13」
- 最後のインデックスの要素は「9」
- したがって「13 × 9 = 117」となります
コード例
以下が実際のコードです。
const arr = [4, 1, 6, 8, 3, 9];
const evenLast = (arr = []) => {
if (arr.length === 0) {
return 0;
} else {
const sub = arr.filter((_, index) => index % 2 === 0);
const sum = sub.reduce((a, b) => a + b);
const posEl = arr[arr.length - 1];
const res = sum * posEl;
return res;
}
};
console.log(evenLast(arr));
コードの解説
この関数の処理内容を順番に見ていきましょう。
- 空配列のチェック: 配列が空の場合は
0を返します。これによりエラーを防ぎます。 filter(): インデックスが偶数(index % 2 === 0)である要素だけを抽出した新しい配列を作成します。reduce(): 抽出された要素をすべて足し合わせて合計値を求めます。- 最後の要素の取得:
arr[arr.length - 1]で配列の末尾の要素を取得します。 - 掛け算: 偶数インデックス要素の合計に最後の要素を掛けた値を結果として返します。
出力
コンソールには次のように表示されます。
117
-
JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説
JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>
-
JavaScriptのconstとletの違いを徹底解説!ブロックスコープ変数の基本と使い方
JavaScriptにおけるconstとletの基本const と let は、ES2015(ES6)で導入された変数宣言用のキーワードです。どちらもブロックスコープ(波括弧 { } で囲まれた範囲)に対応しているのが特徴で、関数スコープしか持たなかった従来の var とは異なる挙動を示します。両者の大きな違いは再代入の可否です。letで宣言した変数は後から何度でも値を再代入できますが、constで宣言した変数は再代入しようとするとエラー(TypeError)が発生します。letとconstの主な違い項目letconst再代入可能不可(エラー発生)スコープブロックスコープブロックスコープ宣言時