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

【JavaScript】数値と文字列が混在する配列から平均値を求める方法

JavaScriptでは、ひとつの配列の中に数値や文字列など、異なるデータ型の要素が混在することがあります。たとえば、次のような配列を考えてみましょう。

const arr = [1,2,3,4,5,"4","12","2",6,7,"4",3,"2"];

今回の課題は、このような配列を受け取り、数値そのもの、あるいは部分的・完全的に数値へ変換できる要素だけを対象として平均値を返すJavaScript関数を作成することです。

たとえば "3454fdf" のような文字列はサンプル配列には含まれていませんが、もし含まれていれば parseInt() によって先頭の数値部分 3454 だけが取り出され、その値が平均の計算に加算されます。

サンプルコード

const arr = [1,2,3,4,5,"4","12","2",6,7,"4",3,"2"];
const calculateAverage = arr => {
    let sum = 0, count = 0;
    for(let i = 0; i < arr.length; i++){
        const val = parseInt(arr[i]);
        if(val){
            sum += val;
            count++;
        };
    };
    return (sum / count);
};
console.log(calculateAverage(arr));

コードの仕組み

  • sum(合計値)と count(対象要素の個数)を 0 で初期化します。
  • for ループで各要素を順に処理し、parseInt() による数値への変換を試みます。
  • 変換結果が有効な数値(falsy でない値)であれば、合計に加算しカウントを 1 つ増やします。
  • 最後に sum / count を返すことで、平均値が求められます。

出力結果

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

4.230769230769231

補足ポイント

この配列の場合、元の数値 8 個(1, 2, 3, 4, 5, 6, 7, 3)と数値化できる文字列 5 個("4", "12", "2", "4", "2")の合計 13 個が計算対象となり、合計 55 ÷ 13 = 約 4.23 という結果になります。

なお、parseInt() は文字列の先頭から読み取れる数字のみを返すため、"3454fdf" のような文字列も部分的に数値化される点に注意してください。また、変換結果が NaN0 になる要素は if 文の条件を満たさないため、自動的に計算対象から除外されます。

  1. JavaScriptの基本配列メソッド解説!push・pop・shift・unshift・spliceの使い方を実例付きで紹介

    JavaScriptには、配列を操作するための便利な組み込みメソッドが数多く用意されています。その中でも特によく使われるのが、要素の追加や削除を行う以下の5つの基本メソッドです。 JavaScriptの主要な配列メソッド一覧 メソッド説明 Array.push()配列の末尾に要素を追加します。 Array.pop()配列の末尾から要素を取り除きます。 Array.unshift()配列の先頭に要素を追加します。 Array.shift()配列の先頭から要素を取り除きます。 Array.splice()配列内の任意の位置で要素の追加・削除を行います。 これらのメソッドは、配列の

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

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