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

JavaScriptでnullやundefinedを含む配列の要素の合計を計算する方法

ここでは、複数の配列を要素として持つ配列(ネストされた配列)を扱います。各サブ配列には数値に加えて、undefinednull の値が含まれているとします。

求められているのは、各サブ配列の要素の合計を計算し、その結果を新しい配列として作成することです。このとき、undefinednull の値は 0 として計算する必要があります。

サンプルデータ

以下のようなサンプル配列を想定します。

const arr = [
    [12, 56, undefined, 5],
    [undefined, 87, 2, null],
    [3, 6, 32, 1],
    [undefined, null]
];

解決のアプローチ

この問題を解くには、次の手順で処理を行います。

  • forEach() を使って、元の配列の各サブ配列を順番に取り出す。
  • 各サブ配列に対して reduce() を適用し、要素の合計を算出する。
  • (acc || 0)(val || 0) という記述により、undefinednull が現れた場合に自動的に 0 として扱う。
  • 計算結果を新しい配列の対応するインデックスに格納する。

コード例

const arr = [
    [12, 56, undefined, 5],
    [undefined, 87, 2, null],
    [3, 6, 32, 1],
    [undefined, null]
];

const newArr = [];

arr.forEach((sub, index) => {
    newArr[index] = sub.reduce((acc, val) => (acc || 0) + (val || 0));
});

console.log(newArr);

実行結果

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

[ 73, 89, 42, 0 ]

コードの解説

このアプローチのポイントは、論理OR演算子(||)を使ったフォールバック処理です。JavaScriptでは undefinednull は falsy(偽と評価される)な値であるため、acc || 0 のように書くことで、これらの値が現れた際に代わりに 0 を使用できます。

例えば、最初のサブ配列 [12, 56, undefined, 5] の場合、12 + 56 + 0 + 5 = 73 となり、undefined0 として正しく計算されています。同様に、すべてが undefinednull で構成される4番目のサブ配列は 0 となります。

  1. JavaScriptで2次元配列の要素を交互に加減算して合計を求める方法

    問題の概要行数と列数が同じ m × n の2次元配列(数値の行列)を受け取り、次の式で表される合計値を計算して返すJavaScript関数を作成します。$\sum_{i=1}^m \sum_{j=1}^n (-1)^{i+j}a_{ij}$この式が意味するのは、各要素に対して「インデックス i + j の偶奇」に応じて符号を切り替えるということです。具体的には、(i + j) が偶数である要素は正の符号で加算し、奇数である要素は負の符号で減算します。チェス盤のように市松模様状にプラスとマイナスが交互に並ぶイメージです。計算イメージ0始まりのインデックスで考えると、左上の要素 (0, 0) は

  2. C言語で2次元配列の全要素の合計を計算する方法(実行時初期化)

    問題実行時初期化(ランタイム初期化)を使用して、2次元配列のすべての要素の合計を計算するプログラムを作成します。2次元配列とは2次元配列は、表形式のデータを格納したい場合や、行列演算などの数学的処理を行うアプリケーションでよく使用されます。宣言の構文は以下の通りです。データ型 配列名 [行サイズ] [列サイズ];例えば、int a[4][4]; のように宣言します。この場合、配列の要素数は「行サイズ × 列サイズ」で求められ、4 × 4 = 16個となります。サンプルプログラム以下は、実行時初期化を使用して2次元配列のすべての要素を読み込み、偶数要素と奇数要素それぞれの合計を計算するC言語のプ