Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

หาสองสมาชิกที่ใกล้ค่าที่กำหนดมากที่สุดในอาร์เรย์ด้วย JavaScript


ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็มที่เรียงแล้ว arr เป็นอาร์กิวเมนต์แรก และตัวเลข target เป็นอาร์กิวเมนต์ที่สอง

ฟังก์ชันควรคืนอาร์เรย์ของตัวเลขสองตัวที่มีอยู่ใน arr และใกล้ target มากที่สุด อาร์เรย์ผลลัพธ์ควรเรียงจากน้อยไปมาก

ตัวอย่างเช่น หากอินพุตคือ

Input

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

Output

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]