JavaScriptで配列内のエントリから正味速度(ネット速度)を計算する方法
ここに、モーターボートが上流(upstream)と下流(downstream)を航行した際の速度データを格納した配列があるとします。それぞれのエントリには「方向」と「そのときの速度」が記録されています。
以下が今回扱うサンプル配列です。
const arr = [{
direction: 'upstream',
velocity: 45
}, {
direction: 'downstream',
velocity: 15
}, {
direction: 'downstream',
velocity: 50
}, {
direction: 'upstream',
velocity: 35
}, {
direction: 'downstream',
velocity: 25
}, {
direction: 'upstream',
velocity: 40
}, {
direction: 'upstream',
velocity: 37.5
}]
私たちの課題は、このような形式の配列を受け取り、航行全体を通じたボートの正味速度(ネット速度)を求める関数を作成することです。ここでの正味速度とは、「上流時に記録された速度の合計から、下流時に記録された速度の合計を差し引いた値」を指します。
findNetVelocity() 関数の実装
それでは、findNetVelocity() という関数を作成し、配列内の各オブジェクトを順番に処理しながら正味速度を計算してみましょう。配列メソッドの reduce() を活用すれば、シンプルかつ効率的に実装できます。
コード例
const arr = [{
direction: 'upstream',
velocity: 45
}, {
direction: 'downstream',
velocity: 15
}, {
direction: 'downstream',
velocity: 50
}, {
direction: 'upstream',
velocity: 35
}, {
direction: 'downstream',
velocity: 25
}, {
direction: 'upstream',
velocity: 40
}, {
direction: 'upstream',
velocity: 37.5
}];
const findNetVelocity = (arr) => {
const netVelocity = arr.reduce((acc, val) => {
const { direction, velocity } = val;
if(direction === 'upstream'){
return acc + velocity;
}else{
return acc - velocity;
};
}, 0);
return netVelocity;
};
console.log(findNetVelocity(arr));
出力結果
コンソールには次のような値が出力されます。
67.5
コードの仕組みを解説
reduce()メソッドは、初期値 0 から処理を開始し、配列の各要素を先頭から順番に畳み込んでいきます。- ループの各ステップでは、オブジェクトから
direction(方向)とvelocity(速度)を分割代入で取り出しています。 - 方向が
'upstream'(上流)の場合は現在の累積値に速度を加算し、そうでなければ'downstream'(下流)として速度を減算します。 - すべての要素を処理し終えた時点の累積値が、そのまま全体の正味速度として返されます。
計算結果の検証
念のため手計算でも確認してみましょう。上流の速度の合計は 45 + 35 + 40 + 37.5 = 157.5、下流の速度の合計は 15 + 50 + 25 = 90 です。したがって、正味速度は 157.5 − 90 = 67.5 となり、関数の出力と一致していることがわかります。
このように reduce() を使えば、条件分岐を伴う集計処理でも数行のコードで簡潔に実装できるため、同様のパターンは売上の集計やスコアの計算など、さまざまな場面で応用できます。
-
Excelで時間差を計算する方法|####エラーとAM/PM表示を解決するコツ
Microsoft Excelは、予算管理や税額計算など、幅広い用途に活用できる強力な表計算ソフトです。豊富な機能を活かせば、電卓代わりとしても使えます。さらに、Excelでは2つの時刻の差(時間差)を計算することも可能です。たとえば、従業員の勤務開始時刻と終了時刻から実際の勤務時間を算出したり、勤務時間の記録を一元管理して給与や賃金の計算に役立てたりできます。 「時間差の計算なら、終了時刻から開始時刻を引くだけだから簡単」と思うかもしれません。しかし、単純に引き算を実行すると、2つの問題に直面します。この記事では、その問題点と具体的な解決方法をわかりやすく解説します。 Excelで時間差を
-
Excelで2つの日付の間のすべての日付を抽出して一覧表示する2つの方法
スケジュール表や活動記録など、日付ごとの表を作成しなければならない場面はよくあります。そのような場合、日付のリストが必要になります。リストには必ず開始日と終了日があり、その間のすべての日付を列挙する必要があります。 Excelで2つの日付間の全日付を一覧表示する方法 この記事では、指定した2つの日付の間にあるすべての日付を、1つの列にリストとして取得する方法を紹介します。やり方は主に次の2つです。 フィルハンドルを使って連続した日付のリストを作成する 数式を使って2つの日付間のすべての日付を取得する 方法1:フィルハンドルで連続日付のリストを作成する Microsoft Excelには「