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

JavaScriptで隣接要素との平均値からなる配列を生成する方法

隣接要素の平均値を求める配列処理とは

たとえば、次のような数値の配列があるとします。

const arr = [3, 5, 7, 8, 3, 5, 7, 4, 2, 8, 4, 2, 1];

ここで求められているのは、各要素とその直前の要素(隣接する前の要素)の平均値を格納した新しい配列を返す関数を作成することです。最初の要素には前の要素が存在しないため、その要素の値をそのまま返します。

それでは、この関数のコードを書いてみましょう。この問題は Array.prototype.map() メソッドを使うことで簡潔に解決できます。

コード例

const arr = [3, 5, 7, 8, 3, 5, 7, 4, 2, 8, 4, 2, 1];
const consecutiveAverage = arr => {
    return arr.map((el, ind, array) => {
        const first = (array[ind-1] || 0);
        const second = (1 + !!ind);
        return ((el + first) / second);
    });
};
console.log(consecutiveAverage(arr));

出力結果

コンソールには次のような出力が表示されます。

[
    3,   4, 6, 7.5, 5.5, 4,
    6, 5.5, 3,   5,   6, 3,
    1.5
]

コードの仕組みを解説

このコードのポイントは以下の2点です。

  • array[ind-1] || 0:最初の要素(インデックス0)の場合、array[-1]undefined になるため、|| 0 によって 0 に置き換えられます。これによりエラーを防ぎつつ、前の要素がない場合の処理を統一できます。
  • 1 + !!ind:インデックスが 0 のときは !!0false(数値としての 0)になるため除数は 1 となり、それ以外のインデックスでは true(数値としての 1)になるため除数は 2 になります。

この仕組みにより、最初の要素はそのままの値が返され、2番目以降の要素は「現在の要素と直前の要素の平均値」が計算されて新しい配列に格納されます。map() を使うことで、元の配列を変更せずに簡潔に処理できる点も魅力です。

  1. JavaScriptで配列の平均値を計算する方法

    JavaScriptで配列の平均値を求めるには、配列内のすべての要素を合計し、その合計を配列の長さ(要素数)で割ります。要素の合計を求めるには、forEach()メソッドやreduce()メソッドを使うと簡単に実装できます。コード例<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initia

  2. JavaScriptで配列の最後の要素を取得・表示する方法

    配列の最後の要素を取得して画面に表示するには、pop()メソッドを利用するのが手軽です。以下に、ボタンをクリックすると配列の最後の要素を表示するサンプルコードを示します。 コード例 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> &