如何在 JavaScript 中查詢陣列中元素之間的距離?


在這個問題陳述中,我們的目標是藉助 Javascript 找到陣列中元素之間的距離。因此,為了完成此任務,我們將使用迴圈和一個變數來儲存 JSON 物件中每個物件的 id。

理解問題陳述

問題陳述是在 Javascript 中編寫一個函式,透過該函式我們可以找到陣列中元素之間的距離。如果我們有一個數組,則距離將透過從我們要測量距離的第一個元素開始計算索引號來測量。例如,陣列為 [ 1, 2, 3, 4, 5 ],假設我們要找到 2 到 4 之間的距離,則距離將為 2,因為 2 之後有兩個元素 3 和 4。

給定問題的邏輯

為了找到陣列中元素之間的距離,我們將定義我們所說的距離。因此,我們可以將距離定義為從陣列中的一個元素移動到另一個元素所需的步數。兩個相鄰元素之間的距離將為 1,而陣列中相距較遠的兩個元素之間的距離將大於 1。因此,我們將定義一個函式,並在該函式中傳遞三個引數:陣列、第一個元素和第二個元素。藉助 indexOf 方法,我們需要找到函式中傳遞的兩個元素的索引。為了計算距離,我們將找到兩個元素的兩個索引之間的差值。並返回距離的結果。

演算法

步驟 1 − 宣告一個函式來查詢兩個元素之間的距離,並將其命名為 findDistance。在其中傳遞三個引數,arr、item1 和 item2。

步驟 2 − 使用 indexOf 方法查詢函式中傳遞的兩個元素的索引。

步驟 3 − 定義一個名為 distance 的變數,我們將在其中儲存兩個元素之間的距離。使用 Math.abs 函式並傳遞上面計算出的兩個元素的索引。

步驟 4 − 在函式結束時返回距離。

步驟 5 − 定義陣列並透過呼叫函式控制檯輸出。

演算法程式碼

//function to calculate the distance between two items
function findDistance(arr, item1, item2) {
   let index1 = arr.indexOf(item1);
   let index2 = arr.indexOf(item2);
   let distance = Math.abs(index1 - index2);
   return distance;
   }
const arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
console.log("The distance between two items:");
console.log(findDistance(arr, 10, 50));

複雜度

建立的函式花費的時間為 O(n),其中 n 是輸入陣列的長度。原因是 indexOf 方法用於搜尋整個陣列以查詢傳遞的元素的索引。並且此過程需要在函式中執行兩次。

結論

在上面的程式碼中,我們將陣列中元素之間的距離定義為在給定陣列中從一個元素移動到另一個元素所需的步數。因此,我們使用了 indexOf 方法來找出兩個元素的索引並計算了元素之間的差值。時間複雜度為 O(n),其中 n 是輸入陣列的長度。

更新於: 2023年5月18日

1K+ 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.