使用 JavaScript 在数组中查找最接近特定数字的两个元素


问题

我们需要编写一个 JavaScript 函数,它将一个整数数组 arr 作为第一个参数,一个目标数字作为第二个参数。

我们的函数应该返回一个恰好包含两个数字的数组,这两个数字存在于数组 arr 中,并且最接近目标值。输出数组也应按照升序排列。

例如,如果输入函数的内容为

输入

const arr = [1, 2, 3, 4, 5];
const target = 3;

输出

const output = [2, 3];

示例

以下是代码 −

 在线演示

const arr = [1, 2, 3, 4, 5];
const target = 3;
const findClosest = (arr = [], target = 1) => {
   const size = 2;
   return arr.sort((a, b) => {
      const distanceA = Math.abs(a - target)
      const distanceB = Math.abs(b - target)
      if (distanceA === distanceB) {
         return a - b
      }
      return distanceA - distanceB
   }).slice(0, size)
   .sort((a, b) => a - b);
};
console.log(findClosest(arr, target));

输出

[2, 3]

更新日期: 2021 年 4 月 24 日

643 次浏览

开启你的职业生涯

完成课程以获取认证

开始
广告
© . All rights reserved.