查找数组中最近的数字的 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+ 次浏览

开启你的 职业生涯

完成课程获得认证

开始学习
广告