查詢陣列中最近的數字的 JavaScript 程式


我們將編寫一個 JavaScript 程式,透過將陣列中的每個元素與目標數字進行比較並跟蹤最接近的數字來查詢陣列中最接近的數字。該程式將使用迴圈遍歷陣列中的每個元素,並使用條件語句比較目標數字與當前元素之間的差值。如果差值小於當前最小的差值,我們將更新最接近的數字。此程式的結果將是給定陣列中與目標最接近的數字。

方法

此程式查詢數字陣列中與目標值最接近的數字:

  • 定義一個變數來儲存目標值和迴圈中當前值之間的差值。

  • 將差值設定為一個非常大的數字,以便陣列中的任何數字都將更小併成為新的最接近的數字。

  • 迴圈遍歷數字陣列,對於每個數字,計算目標值與當前數字之間的絕對差值。

  • 如果當前差值小於儲存的差值,則將儲存的差值更新為當前差值,並將當前數字儲存為最接近的數字。

  • 對陣列中的所有數字重複此過程。

  • 迴圈結束後,與目標值最接近的數字是儲存在變數中的數字。

示例

這是一個 JavaScript 函式的示例,它接受數字陣列和目標數字作為輸入,並返回陣列中與目標數字最接近的數字:

function findClosest(numbers, target) {

   let closest = numbers[0]; 
   // Assume the first number is the closest
   let closestDiff = Math.abs(target - closest); 
   
   // Calculate the difference between the target and closest
   for (let i = 1; i < numbers.length; i++) {
      let current = numbers[i];
      let currentDiff = Math.abs(target - current); 
      
      // Calculate the difference between the target and current number
      if (currentDiff < closestDiff) {
         closest = current; 
         
         // Update the closest number
         closestDiff = currentDiff; 
         
         // Update the closest difference
      }
   }
   return closest;
}
const arr = [45, 23, 25, 78, 32, 56, 12];
const target = 50;

console.log(findClosest(arr, target));

解釋

  • 函式 findClosest 接受兩個引數:一個數字陣列和一個目標數字 target

  • 我們建立一個變數 closest 並將其設定為 numbers 陣列中的第一個數字,並假設這是最接近目標的數字。

  • 我們還建立一個變數 closestDiff,它使用 Math.abs() 計算目標數字和最接近數字之間的差值。Math.abs() 返回數字的絕對值,確保差值始終為正。

  • 然後,我們使用 for 迴圈迭代 numbers 陣列。對於每次迭代,我們將當前數字儲存在 current 變數中,並在 currentDiff 中計算目標與當前數字之間的差值。

  • 如果 currentDiff 小於 closestDiff,我們將 closest 更新為 current,並將 closestDiff 更新為 currentDiff

  • 最後,函式返回最接近目標的數字。

更新於:2023年3月15日

2K+ 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始學習
廣告