JavaScriptで配列をn個ずつのグループに分割して平均値を取得する方法
概要
本記事では、第1引数として数値の配列を、第2引数として数値 n を受け取る JavaScript 関数を作成します。この関数は、配列の要素を n 個ずつのグループに順番に分割し、各グループの平均値を格納した新しい配列を返します。
入力例と出力例
例えば、以下のような入力が与えられた場合を考えてみましょう。
const arr = [1, 2, 3, 4, 5, 6];
const n = 2;
この場合、出力は次のようになります。
const output = [1.5, 3.5, 5.5];
これは、配列が (1, 2)、(3, 4)、(5, 6) という2個ずつのグループに分割され、それぞれの平均値である 1.5、3.5、5.5 が結果として返されるためです。
実装コード
const arr = [1, 2, 3, 4, 5, 6];
const n = 2;
const groupAverage = (arr = [], n = 1) => {
const res = [];
for (let i = 0; i < arr.length;) {
let sum = 0;
for (let j = 0; j < n; j++) {
sum += +arr[i++] || 0;
};
res.push(sum / n);
}
return res;
}
console.log(groupAverage(arr, n));
console.log(groupAverage(arr, 3));
実行結果
コンソールには以下のように出力されます。
[ 1.5, 3.5, 5.5 ]
[ 2, 5 ]
コードの解説
外側の for ループで配列を先頭から順に走査し、内側の for ループで n 個の要素の合計を計算しています。その後、合計値を n で割ることで各グループの平均を算出し、結果配列 res に追加していきます。
なお、+arr[i++] || 0 の部分では、単項プラス演算子によって文字列形式の数値も自動的に数値へ変換されます。変換できなかった場合は 0 が加算されるため、配列内に不正な値が含まれていてもエラーにならずに処理を継続できる点がポイントです。
-
JavaScriptで配列の平均値を計算する方法
JavaScriptで配列の平均値を求めるには、配列内のすべての要素を合計し、その合計を配列の長さ(要素数)で割ります。要素の合計を求めるには、forEach()メソッドやreduce()メソッドを使うと簡単に実装できます。コード例<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initia
-
JavaScriptでIDごとにオブジェクトの配列をグループ化する方法
JavaScriptでオブジェクトの配列をidなどの特定のキーごとにグループ化したい場合、reduce()メソッドを使うと簡潔に実装できます。この記事では、どのプロパティにも対応できる汎用的なgroupBy関数を作成し、実際のサンプルコードとともにその仕組みを詳しく解説します。 reduce()によるグループ化の考え方 reduce()は、配列の各要素を順番に処理しながら、1つの累積値(ここではオブジェクト)を組み立てていくメソッドです。各要素からキーの値を取り出し、その値がまだ結果オブジェクトに存在しなければ新しい配列を作成して、そこへ要素を追加していくことでグループ化を実現します。 サ