使用 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 次瀏覽

開啟你的職業生涯

完成課程以獲取認證

開始
廣告