【JavaScript】各サブ配列の要素間の差を計算して合計を返す方法
問題の概要
今回は、2つの要素を持つサブ配列からなるネストされた配列を受け取り、各サブ配列の「最初の要素」と「2番目の要素」の差を個別に計算し、それらの差の合計値を返すJavaScript関数を作成します。
このような処理は、データセット内の増減額を集計したり、複数のペアごとの変化量を一括で求めたりする場面で役立ちます。
入力例と期待される出力
たとえば、入力配列が以下のようになっているとします。
const arr = [
[5, 3],
[9, 4],
[3, 7],
[4, 6]
];この場合、各サブ配列の差は次のように計算されます。
- [5, 3] → 5 − 3 = 2
- [9, 4] → 9 − 4 = 5
- [3, 7] → 3 − 7 = -4
- [4, 6] → 4 − 6 = -2
これらの合計は「2 + 5 + (-4) + (-2) = 1」となるため、関数の出力は 1 になります。
実装コード(forループを使う方法)
まずは基本的なforループを使った実装です。分割代入を使うことで、サブ配列の各要素を簡潔に取り出せます。
const arr = [
[5, 3],
[9, 4],
[3, 7],
[4, 6]
];
const subtractAndAdd = (arr = []) => {
let res = 0;
for (let i = 0; i < arr.length; i++) {
const [el1, el2] = arr[i];
res += (el1 - el2);
}
return res;
};
console.log(subtractAndAdd(arr));出力結果
コンソールには以下のように出力されます。
1
別解:reduce() を使ったより簡潔な書き方
配列メソッドの reduce() を使えば、同じ処理をさらに短く書くこともできます。
const subtractAndAdd = (arr = []) =>
arr.reduce((sum, [el1, el2]) => sum + (el1 - el2), 0);
console.log(subtractAndAdd(arr)); // 1初期値として 0 を渡し、各サブ配列の差を累積していくだけなので、コードの意図がひと目でわかりやすくなります。
まとめ
- 各サブ配列から2つの要素を取り出し、その差を順番に加算していけばよい
- forループでも
reduce()でも同じ結果が得られるが、reduce()の方が簡潔に書ける - 差が負になる場合は合計から減算される点に注意する
-
JavaScriptで配列の合計と積の絶対差を求める方法
本記事では、数値の配列を唯一の引数として受け取り、配列内のすべての数値の合計と積を計算し、その絶対差を返すJavaScript関数の実装方法を解説します。例えば、配列 [1, 4, 1, 2, 1, 6, 3] の場合、合計は 18、積は 144 となるため、返される値は |18 − 144| = 126 になります。実装コード以下がそのコード例です −const arr = [1, 4, 1, 2, 1, 6, 3]; const sumProductDifference = (arr = []) => { const creds = a
-
最初のn個の自然数における「二乗和」と「和の二乗」の差を求めるJavaプログラム
プログラミングの学習でよく登場する古典的な数学的問題の一つに、「最初のn個の自然数について、各数値の二乗の合計(二乗和)と、合計値を二乗した値(和の二乗)の差を求める」というものがあります。この記事では、問題の内容をわかりやすく解説し、Javaによる実装例を紹介します。 問題の概要 ある整数 n が与えられたとき、以下の2つの値の差を計算するプログラムを作成します。 最初の n 個の自然数それぞれを二乗し、それらを合計した値(二乗和) 最初の n 個の自然数を合計し、その結果を二乗した値(和の二乗) 具体例で確認する n = 3 の場合を例に、手順を順番に見ていきましょう。 n = 3 の