JavaScriptで2次元平面上の2点間の距離を求める方法
問題
x・yプロパティを持つ2つのオブジェクト(平面上の2点を表す)を受け取り、それらの点間の距離を計算して返すJavaScript関数を作成する必要があります。
距離の計算式
2次元平面上の2点間の距離は、ユークリッド距離の公式を使って求められます。
d = √((x₂ − x₁)² + (y₂ − y₁)²)
つまり、x座標の差の2乗とy座標の差の2乗を足し合わせ、その平方根を取ればよいことになります。JavaScriptでは Math.sqrt() メソッドと指数演算子(**)を組み合わせることで、この計算を簡単に実装できます。
実装例
以下が実際のコードです −
const a = {x: 5, y: -4};
const b = {x: 8, y: 12};
const distanceBetweenPoints = (a = {}, b = {}) => {
const x1 = a.x,
x2 = b.x,
y1 = a.y,
y2 = b.y;
const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
return distance;
};
console.log(distanceBetweenPoints(a, b));出力結果
16.278820596099706
コードの解説
このコードでは、まず引数として渡された2つのオブジェクトから各座標値(x1、x2、y1、y2)を取り出しています。デフォルト引数(= {})を指定することで、引数が渡されなかった場合でもエラーが発生しないようにしています。
次に、x座標の差 (x2 - x1) を2乗し、同様にy座標の差 (y2 - y1) を2乗したものを加算します。最後に Math.sqrt() で平方根を求めることで、正確な直線距離が得られます。
今回の例では、点a(5, -4) と点b(8, 12) の間の距離は約 16.28 となります。
-
JavaScriptで2つの配列の差分(共通しない要素)を見つける方法
はじめにJavaScriptでは、2つの配列を比較して「片方にしか存在しない要素」を取り出したい場面がよくあります。例えば、以下のような2つの数値配列があったとします。const arr1 = [12, 54, 2, 4, 6, 34, 3]; const arr2 = [54, 2, 5, 12, 4, 1, 3, 34];この2つの配列には、両方に含まれる共通の要素(12、54、2、4、3、34)があります。一方で、arr1 にだけある要素は「6」、arr2 にだけある要素は「5」と「1」です。今回は、2つの配列を受け取って、どちらか一方にのみ存在する要素をすべて返す関数を作成します。実装
-
Day.jsを使って2つの時刻の差を求める方法【JavaScript】
日付や時刻を扱う際、軽量で使いやすいJavaScriptライブラリ「Day.js」が便利です。この記事では、Day.jsを使って2つの時刻の差(時間数)を計算する方法を解説します。 時刻データの準備 まず、比較対象となる開始時刻と終了時刻をdayjs()で作成します。ここでは例として、開始時刻を10時、終了時刻を22時に設定します。 var startHour = dayjs().hour(10) var endHour = dayjs().hour(22) diff()メソッドで時刻の差を取得する 2つの時刻の差を求めるには、diff()メソッドを使用します。第1引数に比較対象のDay.js